编写非阻塞DOM函数

时间:2016-02-04 23:39:39

标签: javascript

假设我要处理大量数据。为了这个例子,假设数据不能在服务器端处理;它必须在客户端处理。我们还要说整个数据流程如下所示:

for element in data do:
    //do some work with "element"
end

同样,为了这个例子,我们假设data包含100.000个元素。

调用process函数将冻结整个DOM,直到循环到达它结束。我的问题是:有没有办法以非阻塞的方式进行这种处理?是某种异步/等待,使用某种类型的data机制处理yield的块,还是其他任何东西?

编辑:Web Workers不是一个选项,因为我至少需要IE 11支持。

编辑2:似乎我正在将“网络工作者”与“共享网络工作者”混合在一起。问题已得到解答。

1 个答案:

答案 0 :(得分:1)

每次都可以循环给定数量的元素,处理下一个堆栈中的下一批。要完成此任务,您必须使用setTimeout。这是相当基本的,但适用于任何浏览器.. 也许使用reduce或者其他东西......把剩下的东西发送到下一个堆栈等等......

本文可能对https://benjaminhorn.io/code/part-2-cpu-intensive-javascript-computations-without-blocking-the-single-thread/

有所帮助

如果您不能依赖网络工作者,这只能被认为是正确的答案,因为这是针对他们所指定的内容。