在jquery中使用stetimeout函数循环settimeout

时间:2018-03-09 07:54:15

标签: javascript jquery loops settimeout

不确定这是否是最好的方法,但这就是我正在尝试的内容:

示例代码:

$("#someElement").mouseout(function() {
    var firstLoop = setTimeout(function() {
        //do something
    }, 2000);

    setTimeout(function() {
        //do something else
    }, 4000);

    var timer = 1000;
    setTimeout(firstLoop, timer); //this doesn't works
});

我试图无限循环。

2 个答案:

答案 0 :(得分:1)

  

setTimeout(firstLoop,timer); //这不起作用

因为setTimeoutfirstLoop)没有返回setTimeout期望的函数引用。

成功

var firstLoop = function(){ 
  setTimeout(function() {
    //do something
  }, 2000);
}

来自您的评论

  

@arnoldemzi的目标是在超时时无限循环,所以,   第一个功能然后第二个然后第一个然后第二个......依此类推。

只需使用setInterval

即可
$("#someElement").mouseout(function() {
    var firstLoop = function() {
        console.log( "something" );
    };

    setTimeout(function() {
        //do something else
    }, 4000);

    var timer = 1000;
    setInterval(firstLoop, timer); //this doesn't works
});

答案 1 :(得分:0)

如果您希望在某个时间间隔内重复某些内容,可以使用setInterval,并将您想要重复的函数以及以毫秒为单位的间隔传递给它。

我已经稍微改变了你的代码,以证明这一点:

$('button').click(function() {

    var firstLoop = function() {
        console.log('first')
    };

    setTimeout(function() {
        console.log('second')
    }, 4000);

    var timer = 1000;
    setInterval(firstLoop, timer);
});

在这里查看一个工作小提琴:https://jsfiddle.net/hgnm1mph/3/