gpt4 book ai didi

用于 DOM 相关处理的 JavaScript 并行线程

转载 作者:行者123 更新时间:2023-11-30 13:13:10 25 4
gpt4 key购买 nike

我有一个消耗资源的 DOM(浏览器)相关 JavaScript 进程。启动时它会阻塞页面(其他与 DOM 相关的处理)。是否可以异步并行运行此过程,并在完成后将结果传递给主页? Web worker 不是这种情况,因为流程与 DOM 一起工作。

这可以用 iframe 实现吗? JS 是否也在 iframe 中启动并阻止托管页面 DOM?

最佳答案

实际上,这将是使用 WebWorkers 的主要示例,但正如您正确提到的那样,您不会在那里引用 DOM。您唯一的选择是将该过程分离为更小的任务。如果你能做到,你需要问自己两个问题

  • 较小的任务是否需要按顺序运行?
  • 这些任务可以异步运行吗?

如果您可以用回答这两个问题,您可以设置一个失控脚本计时器并异步执行这些任务。示例:

var taskList = [
function() {},
function() {},
function() {},
function() {}
// a whole lot more entrys
]; // in a real-world scenario you would `.push()` values or functions

(function _loop() {
setTimeout(function() {
var start = Date.now();
do {
taskList.shift()();
} while( taskList.length && Date.now() - start < 100)

if( taskList.length ) setTimeout( _loop, 100 );
},100);
}());

上述算法将尽可能快地执行 taskList 中包含的函数,但时间范围最多为 100 毫秒。这将确保浏览器和 UI 线程 在处理过程中不会被阻塞超过 100 毫秒。因此,浏览器将保持响应

关于用于 DOM 相关处理的 JavaScript 并行线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13104381/

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