0

我需要在我的 node.js 服务器上运行一个函数,它每 15 分钟完成一次相同的任务。我用于该 setInterval ,如此处的示例 3 - http://tinyurl.com/c2jj7dl。所以,我遇到了这样的事情:

exports.start = function (list, callback){
    setInterval(stuffTop.loadstuff, 900000, list, function (parsedList) {

                // CODE STUFF HERE


                // THEN THE CALLBACK.
        callback(parsedDynamicList);

    });

}

实际上这些东西有效,但该功能第一次完成 - 仅在 900000MS 之后。是否有一个选项可以使功能完整(在第一轮中) - 调用时直接?谢谢。

4

2 回答 2

3

使用递归调用自身的函数:

foo = function(){
  doStuff()
  setTimeout(foo,900000)
}

在您的情况下,它看起来像这样:

exports.start = function (list, callback){
  var foo = function () {
    stuffTop.loadstuff(list, function(parsedList) {
      //CODE STUFF HERE
      //THEN THE CALLBACK
      callback(parsedDynamicList);
      setTimeout(foo,900000);
    });
  }
  foo();
}
于 2012-11-25T20:28:02.837 回答
2

您的问题的解决方案很简单。在进入 setInterval 之前调用该函数。像这样:

    var callback=function(){}
    var list=['some','list'];
    var repeaterFunction = function(){console.log("do now!")}

    var start = function (list, callback){
        repeaterFunction();
    var repeater = setInterval(repeaterFunction, 5000, list, function(parsedList){
                    // CODE STUFF HERE
                    // THEN THE CALLBACK.
            callback(parsedDynamicList);

        });

    }   
    start()​

我使用的事实var repeater = setInterval(...允许clearInterval(repeater)您随时使用。

这是小提琴

于 2012-11-25T21:58:14.197 回答