编写非阻塞 DOM 函数

Writing non-blocking DOM functions

本文关键字:DOM 函数      更新时间:2023-09-26

假设我有一些大量的数据要处理。对于此示例,假设数据无法在服务器端处理;它必须在客户端处理。假设整个数据处理过程如下所示:

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 时,这才能被认为是正确的答案,因为这适用于他们指定的内容。