首页新闻找找看学习计划

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
< >
分享
最佳答案
3

var i = 0;

setInterval(function(){i++; console.log(records[i]);},3000);

收获园豆:10
````` | 专家六级 |园豆:14268 | 2016-06-24 09:01

不错,好使,就是得把i++放在后边

testewr | 园豆:3 (初学一级) | 2016-06-24 10:51
其他回答(5)
0
function sleep(ms) {
    var starttime = new Date().getTime();
    do {
    } while ((new Date().getTime() - starttime) < ms)
}

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

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

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

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

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

楼上的是对的。

收获园豆:1
seayxu | 园豆:5468 (大侠五级) | 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
幻天芒 | 园豆:36522 (高人七级) | 2016-06-24 09:57
0

正经思路就是timeout递归.

4楼的也是可以的.

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