2

所以基本上在下面的例子中,如果 function1 运行,它会等到 function2 完成运行,然后 test 等于 1?或者它会在一个单独的“线程”上执行 function2,基本上运行 function2 并同时使 test 等于 1?(我认为这就是所谓的,我对整个多线程的事情不太了解)。

function function1() {
    function2();
    test = 1;
}
4

3 回答 3

2

是的,您function1将等待function2返回,然后再继续。但是,您function2可能会调用类似setTimeoutwhich 在function1完成之前不会运行但function2仍会在function1continue 之前返回的东西,即使它设置为在内部运行的代码setTimeout尚未运行也是如此。

( setTimeoutand setInterval) 函数不能在单独的线程中工作,但它们会在其他所有内容完成时通过运行代码来伪造它。

于 2013-05-15T01:57:50.257 回答
2

这是一个关于如何执行function2()设置的问题。然而,几乎所有的 javascript 都以顺序方式执行,除非使用setTimeout()setInterval()其他事件驱动的机制来执行它。然而,这不是真正的多线程,简单地说,它只是通过等待其余代码执行来作弊

但是,您所说的是执行function2()然后等待它完成然后执行test = 1,您几乎可以将function2()' 的主体视为插入主体的开头function1()。关键字是“几乎”。但这应该让您了解 JS 是如何执行的。但是,V8(Google 的 javascript 引擎)可以支持伪多线程环境。虽然这在技术上可以在磨机 JS 的正常运行中完成,但它很快就会变得非常混乱,更多信息请查看本教程

于 2013-05-15T02:00:05.580 回答
1

不,它将等待function2完成。

有多种方法可以进行多线程,但它们需要一些工作,请参阅此处了解更多信息。

于 2013-05-15T01:57:27.620 回答