微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

javascript – 循环后是否总是执行ajax回调?

我有这个 Javascript / JQuery代码

$.ajax({...}).done(function() {
    console.log('done');
});
for(var i = 0; i < 10; i++)
    console.log(i);

假设当循环到达第5次迭代时,ajax请求完成,浏览器是否会暂停循环执行并运行回调,还是等待循环完成?

为了更清楚,这样的输出可能吗?

0

1

2

3

4

DONE

6

7

8

9

或者输出总是:

0

1

2

3

4

6

7

8

9

DONE

更一般地说,我想知道浏览器是否始终在执行队列的底部推送回调.

解决方法

您可以获得您描述的两个输出示例,具体取决于ajax请求完成所需的时间.

编辑:请注意,这可能会锁定您的浏览器一段时间,但它不应该崩溃,然后打印像***** DONE! ***** 2828725

var promise = new $.Deferred(),i = 1,j = 0,to = 5000000;

promise.done(function() {
    document.write("***** DONE! *****\n" + i);
    i = to;
});

setTimeout(function() {
    promise.resolve();
},1000);

for(i = 1; i < to; ++i) {
    console.log(++j);
    //alert(++j);
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script>

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐