码迷,mamicode.com
首页 > 编程语言 > 详细

for循环中Ajax 单线程

时间:2014-07-16 19:08:48      阅读:227      评论:0      收藏:0      [点我收藏+]

标签:数据   art   for   问题   代码   c   

今儿调试发现一个有趣的小问题:网上海搜~~上代码
var i;
for(i=0;i<10;i++){
      ajaxServise(i);
}
 
在for循环中调用ajax方法  补充页面上的数据,这样写是错误的,他不会每执行一次for循环就执行一次ajax方法,而是等for循环结束才去执行ajax方法,所以导致ajax只被执行一次。然而当修改如下:
 
for(i=0;i<10;i++){
      alert("aa");
      ajaxServise(i);
}
与上面不同的是在每次调用的时候都弹出一个窗体  alert("内容随意")  这样就可以在页面正确显示内容 而不是一条内容
 
原因:原因就是for循环在JS中是单线程的,他会在for循环结束之后然后执行下一步,一步一步进行实现,而alert切断循环,让程序响应一次,从而再次调用ajax方法,然而在程序当中我们却不能让alert方法出现。
解决办法:
var i=0;
var sum=10;
var time;
ajaxServise(i){
       if(i==sum){
            clearTimeout(time);
        }
        i=i+1;
        time = setTimeout(ajaxServise(),10);
        ……………………
        ………………
        …………
        ……
}
 
这里用setTimeout(AJAX())方法进行调用,setTimeout会当此方法执行完毕然后再次执行AJAX()方法,用setTimeout与clearTimeout配合完美解决此问题。
 
setTimeout是伪多线程。

for循环中Ajax 单线程,布布扣,bubuko.com

for循环中Ajax 单线程

标签:数据   art   for   问题   代码   c   

原文地址:http://www.cnblogs.com/Super-kk/p/3844680.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!