我已经看到了很多异步JavaScript函数示例,其中包含setTimeout,AJAX调用等。

显然,这些都有一定的延迟,这意味着脚本的流程会受到影响。但是我想知道,如果我有这样的事情怎么办:

function init() {
    this.initSlider();
    this.testLog();
}

function initSlider() {
    // find multiple items and build up a slider instance
    // for each of these elements.
}

function testLog() {
    console.log('test);
}


如果可能使用initSlider花费很长时间,它将首先简单地运行我的testLog函数吗?

我目前对此不太确定。我知道在javascript流程方面可能有很多示例,但是我找不到简单的函数只需要较长时间运行的示例。

最佳答案

这完全取决于initSlider()中的内容。尽管initslider()是繁重的函数,并且不包含任何异步语句
那么testLog()将不会首先执行。

Javascript将所有语句存储在调用堆栈中,它们将一个接一个地执行。

如果存在asynchronus语句,则它将该语句从调用堆栈中删除,并且您的testLog()有机会执行。

所以对于您的问题,我的答案将取决于initSlider()内部的代码

08-08 07:55