所以基本上在下面的例子中,如果运行了function1,它会等到function2在test等于1之前完成运行吗?或者它会在一个单独的“线程”上执行function2,该线程基本上运行function2并使测试同时等于1? (我认为这就是所谓的,我对整个多线程事物的了解不多。)
function function1() {
function2();
test = 1;
}
答案 0 :(得分:2)
是的,您的function1
会在继续之前等待function2
返回。但是,您的function2
可能会调用setTimeout
之类的内容,这些内容在function1
完成后才能运行,但function2
仍会在function1
继续之前返回,即使代码为setTimeout
设置为在setTimeout
内运行还没有运行。
setInterval
(和{{1}})函数在单独的线程中不起作用,但是当其他所有内容完成时,它们通过运行代码来伪造它。
答案 1 :(得分:2)
这是关于如何实施function2()
设置的问题。但是,除非使用setTimeout()
,setInterval()
或其他事件驱动的机制来执行,否则几乎所有javascript都以顺序方式执行。然而,这不是真正的多线程,只需等待其余的代码执行就可以作弊
然而,你所拥有的是说你执行function2()
然后等待它完成然后执行test = 1
,你可以几乎想到function2()
将身体插入function1()
身体的开头。关键字是“差不多”。但这应该可以让您了解JS的执行方式。但是,V8(Google的javascript引擎)可以支持伪多线程环境。虽然技术上可以在工厂JS的正常运行中完成,但是很快就会变得非常混乱,有关更多信息,请查看此Tutorial。
答案 2 :(得分:1)
不,它会等待function2
完成。
有多种方法可以进行多线程但需要一些工作,有关其他信息,请参阅here。