你可以设置多少setTimeouts?

时间:2013-10-23 06:16:18

标签: node.js settimeout upperbound

我正在编写一个服务器端作业,试图通过执行以下操作来限制操作:

var throttle = 1000 / 20;
for (var i = 0; i < 80000; i++) {
    setTimeout(operation, Math.floor(throttle * i));
}

我认识到睡眠在这里工作得更好,但是node.js需要一个库,所以我试图强制它。但是,这个程序可以用于超过一千种这样的东西,然后......没有。没有错误信息,只是没有发生任何事情。我怀疑JS用完了超时时间。

我已经迁移到睡眠状态,这看起来很有效,但我很好奇JS是如何处理超时的。有没有人有任何额外的见解?

谢谢!

对于它的价值,我假设答案在这个文件中https://github.com/joyent/node/blob/master/src/timer_wrap.cc,假设它不在V8本身。

1 个答案:

答案 0 :(得分:1)

为什么不使用setInterval(function, interval)

var throttle = 1000 / 20;
var i = 0;
var interval = setInterval(function() { 
        operation();
        if(i++ == 80000) {
            // we're done
            clearInterval(interval); 
        }
    }, Math.floor(throttle * i));

(当然,纠正我所介绍的任何一个人)