gpt4 book ai didi

javascript - setTimeout 的递归函数调用限制为每秒约 200 次调用,为什么?

转载 作者:行者123 更新时间:2023-12-04 08:16:43 24 4
gpt4 key购买 nike

此代码以 1 毫秒的 setTimeout 递归调用相同的函数,理论上每秒应调用该函数 1000 次。但是,它每秒只调用大约 200 次:
这种行为发生在不同的机器和不同的浏览器上,我检查了它是否与最大调用堆栈有关,但这个限制实际上在任何浏览器上都高于 200。

const info = document.querySelector("#info");
let start = performance.now();
let iterations = 0;

function run() {
if (performance.now() - start > 1000) {
info.innerText = `${iterations} function calls per second`;
start = performance.now();
iterations = 0;
}

iterations++;
setTimeout(run, 1);
}

run();
<div id="info"></div>

最佳答案

嵌套计时器的运行频率是有限制的。 HTML5 标准说: 11:“如果嵌套级别大于 5,并且超时小于 4,则将超时设置为 4。”
这仅适用于客户端引擎(浏览器)。在 Node.JS 中不存在此限制
HTML Standard Timers Section
Very similar example from javascript.info

关于javascript - setTimeout 的递归函数调用限制为每秒约 200 次调用,为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65672101/

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