所以基本上在下面的例子中,如果 function1 运行,它会等到 function2 完成运行,然后 test 等于 1?或者它会在一个单独的“线程”上执行 function2,基本上运行 function2 并同时使 test 等于 1?(我认为这就是所谓的,我对整个多线程的事情不太了解)。
function function1() {
function2();
test = 1;
}
所以基本上在下面的例子中,如果 function1 运行,它会等到 function2 完成运行,然后 test 等于 1?或者它会在一个单独的“线程”上执行 function2,基本上运行 function2 并同时使 test 等于 1?(我认为这就是所谓的,我对整个多线程的事情不太了解)。
function function1() {
function2();
test = 1;
}
是的,您function1
将等待function2
返回,然后再继续。但是,您function2
可能会调用类似setTimeout
which 在function1
完成之前不会运行但function2
仍会在function1
continue 之前返回的东西,即使它设置为在内部运行的代码setTimeout
尚未运行也是如此。
( setTimeout
and setInterval
) 函数不能在单独的线程中工作,但它们会在其他所有内容完成时通过运行代码来伪造它。
这是一个关于如何执行function2()
设置的问题。然而,几乎所有的 javascript 都以顺序方式执行,除非使用setTimeout()
或setInterval()
其他事件驱动的机制来执行它。然而,这不是真正的多线程,简单地说,它只是通过等待其余代码执行来作弊
但是,您所说的是执行function2()
然后等待它完成然后执行test = 1
,您几乎可以将function2()
' 的主体视为插入主体的开头function1()
。关键字是“几乎”。但这应该让您了解 JS 是如何执行的。但是,V8(Google 的 javascript 引擎)可以支持伪多线程环境。虽然这在技术上可以在磨机 JS 的正常运行中完成,但它很快就会变得非常混乱,更多信息请查看本教程。
不,它将等待function2
完成。
有多种方法可以进行多线程,但它们需要一些工作,请参阅此处了解更多信息。