我已经看到了很多异步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()内部的代码