gpt4 book ai didi

javascript - setTimeout 有限制吗?

转载 作者:IT老高 更新时间:2023-10-28 23:08:09 32 4
gpt4 key购买 nike

专门讨论(服务器端)V8,假设我不关心准确性,因为我可以检测和补偿它,我可以字面上设置数千个相对简单的超时间隔几秒钟彼此使用 setTimeout 而不面临除 RAM 之外的任何其他限制?如果我要使用一个在任何给定时间可能有数千个计划超时的系统,我应该注意什么?

为了记录,我已经阅读了约翰的 Resig 优秀文章 How Javascript Timers work所以不需要指出那里已经涵盖的任何内容:) 我知道 node.js 是单线程的,如果时间太长,计时器会阻塞其他计时器,等等。

PS:我严格地试图理解我所描述的可行性,无需指出“肯定有更好的方法来做你想做的事!”。

最佳答案

您可能遇到的唯一现实世界限制是 Node 可用的内存量。使用以下代码进行测试。我使用 oneMillion 和 int32Max 成功运行了下面的示例。使用 int64Max 时,我从 node.js 收到以下错误。我正在使用 64 位 Windows 和 4GB 内存。

FATAL ERROR: CALL_AND_RETRY_2 Allocation failed - process out of memory

要测试的 Node 代码:

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 - setTimeout 有限制吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12168708/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com