JavaScript';s设置间隔和功能完成的时间

JavaScript';s设置间隔和功能完成的时间,javascript,node.js,callback,setinterval,Javascript,Node.js,Callback,Setinterval,我需要在node.js服务器上运行一个函数,每15分钟完成一次相同的任务。 我使用了setInterval,如这里的示例3-。 所以,我得到了这样的东西: exports.start = function (list, callback){ setInterval(stuffTop.loadstuff, 900000, list, function (parsedList) { // CODE STUFF HERE /

我需要在node.js服务器上运行一个函数,每15分钟完成一次相同的任务。 我使用了setInterval,如这里的示例3-。 所以,我得到了这样的东西:

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

                // CODE STUFF HERE


                // THEN THE CALLBACK.
        callback(parsedDynamicList);

    });

}
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();
}
事实上,这个功能可以正常工作,但是这个功能是第一次完成的-只有在900000毫秒之后。
调用时是否有使函数完整(在第一轮中)-直接的选项?谢谢。

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

foo = function(){
  doStuff()
  setTimeout(foo,900000)
}
在您的情况下,它将如下所示:

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

                // CODE STUFF HERE


                // THEN THE CALLBACK.
        callback(parsedDynamicList);

    });

}
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();
}

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

foo = function(){
  doStuff()
  setTimeout(foo,900000)
}
在您的情况下,它将如下所示:

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

                // CODE STUFF HERE


                // THEN THE CALLBACK.
        callback(parsedDynamicList);

    });

}
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();
}

你问题的答案很简单。在进入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)
在您希望的任何时候使用


以下是

问题的解决方案很简单。在进入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)
在您希望的任何时候使用


这里是Is
stuffTop.loadstuff
synchronous?它是另一个接受回调的函数,所以如果我理解正确,答案是否定的……我被
setInterval
的四个参数弄糊涂了,这通常需要两个参数。所以,只要看看我附加的链接……Is
stuffTop.loadstuff
synchronous?它是一个另一个接受回调的函数,因此如果我理解正确,答案是否定的。我对
setInterval
的四个参数感到困惑,这通常需要两个参数。因此,请看一下我附加的链接。。。