首页 > 解决方案 > Javascript中的forEach并行?

问题描述

我想同时对数组中的所有元素应用一个函数,我不想一个一个地应用它,我的意思是,顺序。这是因为我有大量元素,我想同时在 Canvas 中绘制它们。我正在使用 Angular 6。

我有这个:

 drawRow(row: Node[]) {
    row.forEach((item) => {
      this.addToCanvas(item);
    });
 }

我想将行的所有元素并行添加到画布中。是否需要安装一些库来执行此操作,或者我可以仅使用纯 JavaScript 来执行此操作...?什么是正确的方法?

提前谢谢你=)

标签: javascripttypescript

解决方案


就像评论中提到的 Pointy 一样,javascript 主要是单线程的。

如果你因为画布很大而发现延迟,你可以promisify addToCanvas。它将做的是在将来推迟对这些函数的调用,允许页面在每次调用之间进行交互。

如果在调用所有“addToCanvas”之后您必须做某事,您可以使用 Promise.all()

要进行真正的并行工作,您需要使用 WebWorker,但这些都有局限性。它们无法访问 DOM,只能与异步消息 API 进行交互。根据您的需要,它可能是一个解决方案。如果您想在后台进行长时间计算,这很有用。


推荐阅读