2013-12-19 42 views
0

我正在讀'Pedro Teixiera'的一本名爲'Hands on node.js'的書。javascript的一個示例程序的輸出給出了錯誤的答案

我正試圖執行一個同樣的程序,在那本書中將會調用一個函數,並且該函數會在一定的時間間隔內一次又一次遞歸地調用相同的函數。 但是,當我執行,它只給了一次'1',並停止 請幫我找出爲什麼它不能再次調用相同的功能。 示例程序如下:

var schedule = function(timeout, callbackfunction) { 
    return { 
     start: function() { 
     setTimeout(callbackfunction, timeout) 
     } 
    }; 
}; 

(function() 
{ 
    var timeout = 10000; // 1 second 
    var count = 0; 
    schedule(timeout, function doStuff() { 
     console.log(++ count); 
     schedule(timeout, doStuff); 
    }).start(timeout); 
})(); 
+0

只是FYI 10000毫秒是10秒。 – JJJ

+0

你還指望它做什麼? – Bergi

+0

我希望這個循環繼續下去,因爲如果我沒有錯,就沒有break語句。 –

回答

1

你實際上並沒有再次調用該函數。 start()是啓動定時器的部分。

schedule(timeout, function doStuff() { 
    console.log(++count); 
    schedule(timeout, doStuff).start(); // <--- added .start() here 
}).start(); 

(另請注意start()函數不帶參數。)

1

一些間隔連連

不,你會代替setIntervalsetTimeout

它給只有一次「1」,並停止

是的,你doStuff功能不把一個新的超時。您的奇數schedule功能需要爲.start() ed!

相關問題