首页 新闻 会员 周边 捐助

js 中的for循环 怎么每循环一次睡眠3秒???

1
悬赏园豆:15 [已关闭问题] 解决于 2016-06-24 15:06


for(var j=0;j<records.length;j++){
var record=records[j];
  collClickRemoteAssist(record);
}

就是每一次for,睡眠3秒后,然后执行方法( collClickRemoteAssist(record);)

继续循环一次,睡眠3秒,执行方法。。。。。

------------------------------------以下是setTimeout方法测试-------不可取--------------
setTimeout( function(){
collClickSecond(record);
},3000 );

要是使用setTimeout方法,程序会睡眠3秒后一次执行完循环,等于延迟了3秒。

怎么解决?????????

testewr的主页 testewr | 初学一级 | 园豆:3
提问于:2016-06-24 08:51
< >
分享
其他回答(4)
0
function sleep(ms) {
    var starttime = new Date().getTime();
    do {
    } while ((new Date().getTime() - starttime) < ms)
}

這是段仿sleep的function,應該可以解決你的問題

但這並不是個好的使用方式..

收获园豆:1
RosonJ | 园豆:4910 (老鸟四级) | 2016-06-24 09:03

这个不行,这个计算机会死机的

支持(0) 反对(0) testewr | 园豆:3 (初学一级) | 2016-06-24 09:35
1

楼上的是对的。

收获园豆:1
CodeHsu | 园豆:5668 (大侠五级) | 2016-06-24 09:30
0

for(var i = 0 ; i < 5 ; i++){
  setTimeout(function(){
    console.log(1);
  },i*3000);
}

收获园豆:1
张云山 | 园豆:642 (小虾三级) | 2016-06-24 09:39
0
const SLEEP_MILLISECONDS = 1000 * 3;

for (var j = 0; j < records.length; j++) {
    var record = records[j];
    (function(record) {
        setTimeout(function() {
            collClickRemoteAssist(record);
        }, j * SLEEP_MILLISECONDS);
    })(record);
}

 

收获园豆:1
幻天芒 | 园豆:37207 (高人七级) | 2016-06-24 09:57
1

正经思路就是timeout递归.

4楼的也是可以的.

收获园豆:1
吴瑞祥 | 园豆:29449 (高人七级) | 2016-06-24 13:14
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册