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