我有这个
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] 举报,一经查实,本站将立刻删除。