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

时间:2013-05-15 01:55:04

标签: javascript multithreading function abstract

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

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

3 个答案:

答案 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