javascript – setTimeout有什么限制吗?

前端之家收集整理的这篇文章主要介绍了javascript – setTimeout有什么限制吗?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
具体来说(服务器端)V8,并且假设我不关心准确性,因为我可以检测和补偿它,我可以设置成千上万的相对简单的超时相隔几秒,使用setTimeout而不面对任何其他限制除了RAM?有没有什么抓到我应该知道,如果我要使用一个系统,在任何时候可能有数千个预定的超时?

为了纪录,我已经阅读了John’s Resig在How Javascript Timers work上的优秀文章,所以没有必要指出已经覆盖的任何东西:)我知道node.js是单线程的,计时器可以阻止其他计时器,如果它们花费太长时间等等

PS:我正在严格意识到我所描述的可行性,无需指出“肯定会有更好的方法来做你想做的事情”.

解决方法

您可能会遇到的唯一真实世界的限制是可用于节点的内存量.使用以下代码进行测试.我使用一百万和int32Max成功地运行了这个例子.当使用int64Max时,我从节点收到以下错误.我正在使用64位Windows 4GB内存.
FATAL ERROR: CALL_AND_RETRY_2 Allocation Failed - process out of memory

要测试的节点代码

var util = require('util');
var int64Max = 9007199254740992; 
var int32Max = 2147483647;
var oneMillion = 1000000;
var tenThousand = 10000;
var counter = 0;

//Exchange the limiter with one of the above vars to test.
for (var i = 0; i < oneMillion; i++){   
     setTimeout(log,1);
     //required as the timeout/callback method will not be called until the loop ends due 
     //to node/js being single threaded.
     util.log('loop:' + i);
}

function log(){
     util.log('callback: ' + counter++);
}

猜你在找的JavaScript相关文章