繁体   English   中英

函数是否在继续执行之前等待被调用函数完成?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM