[英]Does a function wait for a called function to complete before continuing?
因此,基本上在下面的示例中,如果运行了function1,它将在测试等于1之前等到function2完成运行吗? 还是会在单独运行功能2并同时使test等于1的单独“线程”上执行功能2? (我想这就是它的名字,我不太了解整个多线程技术)。
function function1() {
function2();
test = 1;
}
是的,您的function1
将等待function2
返回,然后再继续。 但是,您的function2
可能会调用诸如setTimeout
东西,它们本身将不会运行,直到function1
完成,但function2
仍将在function1
继续之前返回,即使它设置为在setTimeout
中运行的代码尚未运行。
setTimeout
(和setInterval
)函数无法在单独的线程中工作,但它们会在其他所有操作完成后通过运行代码来伪造它。
这是关于如何设置function2()
的实现的问题。 但是,除非将setTimeout()
, setInterval()
或其他事件驱动的机制用于执行,否则几乎所有的javascript都以顺序方式执行。 但是,这不是真正的多线程,只需等待其余代码执行即可,简单地说就是作弊
但是,您所说的是先执行function2()
然后等待它完成,然后执行test = 1
,您几乎可以想到将function2()
的主体插入到function1()
主体的开头。 关键字为“几乎”。 但这应该使您了解如何执行JS。 但是,V8(Google的JavaScript引擎)可以支持伪多线程环境。 虽然从技术上讲,这可以在正常运行的JS磨机中完成,但很快就会变得非常混乱,有关更多信息,请查看此教程 。
不,它将等待function2
完成。
有多种方法可以执行多线程,但它们需要一些工作,请参见此处以获取更多信息。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.