Javascript - for循环中的sleep()

时间:2016-04-05 19:35:46

标签: javascript sleep

我有这个脚本:

var array = [];
array[0] = 'http://facebook.com/';
array[1] = 'http://instagram.com/';
array[2] = 'http://twitter.com';

$(document).ready(function()
{
    for(i=0; i<= 2; i++)
    {
        $('#ifr').attr('src', array[i]);
        // sleep here for 0,5 second
    }
});

我怎么能停止这个循环0.5秒?

2 个答案:

答案 0 :(得分:4)

您可以将setTimeout用于此目的,

for(i=0; i<=2; i++) {
  setTimeout(function(i) {
    $('#ifr').attr('src', array[i]);
  },500 * i,i);
  //1000 ms is 1 sec, here I have give 0.5 seconds as a delay.
}

无需为每次迭代创建范围来处理闭包问题。您可以使用setTimout的第三个参数来设置callBack函数的参数。

答案 1 :(得分:1)

(function rec(i){
    setTimeout(function(){
        $('#ifr').attr('src', array[i]);
        if(i <= 2) rec(i+1);
    }, 5000);
})(0);

编辑:添加if(i <= 2)以便它不会永远递归..这将在2次迭代后停止..