编写非阻塞 DOM 函数
Writing non-blocking DOM functions
假设我有一些大量的数据要处理。对于此示例,假设数据无法在服务器端处理;它必须在客户端处理。假设整个数据处理过程如下所示:
for element in data do:
//do some work with "element"
end
同样,为了此示例,假设data
包含 100.000 个元素。
调用进程函数将冻结整个 DOM,直到循环结束。我的问题是:有没有办法以非阻塞的方式进行这种处理?无论是某种异步/等待,使用某种类型的yield
机制处理data
块,还是其他任何东西?
编辑:Web Workers不是一种选择,因为我至少需要IE 11支持。
编辑2:似乎我将"Web Workers"与"Shared Web Workers"混合在一起。问题已得到解答。
您可以每次循环给定数量的元素,在下一个堆栈中处理下一批。为此,您必须使用 setTimeout
.这是非常基本的,但适用于任何浏览器。也许使用减少什么的..将其余的发送到下一个堆栈,依此类推。
本文可能对 https://benjaminhorn.io/code/part-2-cpu-intensive-javascript-computations-without-blocking-the-single-thread/有所帮助
只有当您不能依赖 Web worker 时,这才能被认为是正确的答案,因为这适用于他们指定的内容。
相关文章:
- 如何在DOM元素上按类型构建此函数
- 在Angular中呈现DOM对象时,如何调用控制器中指定的函数
- 如何检查DOM节点是否继承自构造函数
- 在DOM加载时触发函数
- 使用promise通过外部函数从DOM中检索属性
- 直接在DOM事件处理程序中调用作用域函数的最短方法是什么
- 在 dom 完成加载 durandal 后调用函数
- 如何在构造函数中创建一个简单的DOM元素,并在调用时将其附加到元素中
- "撤消”;Javascript中的DOM操作函数
- DOM:如何根据迭代器值设置元素宽度并在mouseover上调用函数
- 向一个jQuery/DOM元素添加一个函数
- 为什么jQuery选择器函数与原生DOM方法相比如此缓慢
- 当我们使用基于标记的DOM就绪执行时,如何处理js函数
- JavaScript-所有DOM操作函数都返回null/empty
- 为什么要在DOM事件触发之前声明命名函数
- Dom 函数,将 HTML 插入到 dom 中替换所有内容
- 编写非阻塞 DOM 函数
- 在Javascript中将变量传递到DOM函数中
- 我可以替换标准的 DOM 函数,如 removeChild.
- 尝试使用DOM函数