0

node.jsサーバーで、15分ごとに同じタスクを完了する関数を実行する必要があります。ここで例番号3のようにそのsetIntervalに使用しました-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 に答える