一个javascript示例程序的输出给出了错误的答案



我正在读一本名为"Hands on node.js"的书,作者是"Pedro Teixiera"。

我试图在那本书中执行一个相同的程序,它将调用一个函数,并且该函数在某个时间间隔内一次又一次地递归调用相同的函数。但是当我执行时,它只给出一次"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);
})();

您实际上不会再次调用该函数。 start()是启动计时器的部分。

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

(另请注意,start()函数不带参数。

一次

又一次地间隔一段时间

不,为此您将使用setInterval而不是setTimeout.

它只给出一次"1"并停止

是的,您的doStuff函数不会设置新的超时。您的奇数schedule函数需要.start()编辑!

相关内容

  • 没有找到相关文章