Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/372.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
javascript的一个示例程序的输出给出了错误的答案_Javascript_Recursion_Timeout - Fatal编程技术网

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

javascript的一个示例程序的输出给出了错误的答案,javascript,recursion,timeout,Javascript,Recursion,Timeout,我在读一本叫Pedro Teixiera的书,书名为“Hands on node.js” 我试图执行书中给出的同一个程序,该程序将调用一个函数,该函数在某个时间间隔内一次又一次地递归调用同一个函数。 但当我执行时,它只给出一次“1”并停止 请帮我弄清楚为什么它不能再次调用同一个函数。 示例程序如下所示: var schedule = function(timeout, callbackfunction) { return { start: function() {

我在读一本叫Pedro Teixiera的书,书名为“Hands on node.js”

我试图执行书中给出的同一个程序,该程序将调用一个函数,该函数在某个时间间隔内一次又一次地递归调用同一个函数。 但当我执行时,它只给出一次“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();
计划(超时,函数doStuff(){
console.log(++count);
计划(超时,doStuff).start();//
每隔一段时间

不,因此您应该使用
setInterval
而不是
setTimeout

它只给出一次“1”并停止


是的,您的
doStuff
函数没有设置新的超时。您的奇数
计划
函数需要是
.start()
ed!

仅供参考10000毫秒是10秒。您还期望它做什么?如果我没有错的话,我希望这个循环继续,因为没有break语句。没有循环。为什么要有break语句?