gpt4 book ai didi

Javascript:带有 setInterval 的后台任务的理想 block 大小?

转载 作者:行者123 更新时间:2023-12-02 20:03:12 25 4
gpt4 key购买 nike

考虑一个通过 setTimeout/setInterval 定期执行后台任务的应用程序。一个函数调用应该完成的理想工作量是多少?

示例:

myTask = function() {
for (var i=0; i<chunkSize; i++) { ...work... }
}

setInterval(myTask, period);

如果您增加chunkSize(并且每次调用执行更多迭代),当然它会运行更长时间。这意味着,period 也必须增加,并且您可以减少调用该函数的频率。但我发现,尽管如此, block 越大,完成的工作就越多。这可能是由于 setTimeout/setInterval

的开销造成的

权衡是:较大的 block 大小会使应用程序的 react 性降低。这不仅涉及用户交互,还涉及其他间隔。因为只要函数正在运行其迭代,就不会触发其他间隔。因此,大块大小会使其他间隔不太准确,或者(在最坏的情况下)在某些浏览器中完全禁用它们,这样它们就不会再被调用。

如果你愿意

  • 最大限度地完成工作量
  • 尽量减少对其他时间间隔的不良影响并保持准确

实现这一目标的最佳方法是什么?如何确定合适的 chunkSize?或者我应该监视循环中的执行时间并在一定时间后中止?还是别的什么?

(顺便说一句,这是关于普通的旧 JavaScript,而不是 HTML5 WebWorkers)

最佳答案

如果可以的话,您应该使用setTimeout而不是setIntervalsetInterval 将在 period 之后调用该函数,无论前一个间隔的函数是否完成。使用setTimeout,您可以确保该函数在再次调用之前已完成。

(function myTask() {
for (var i=0; i<chunkSize; i++) { ...work... }
setTimeout( myTask, period );
})();

关于Javascript:带有 setInterval 的后台任务的理想 block 大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7734792/

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