Javascript 中的 forEach 并行?

Kim*_* BF 7 javascript typescript

我想同时将一个函数应用于数组中的所有元素,我不想一个一个地应用它,我的意思是顺序地应用它。这是因为我有很多元素,我想同时在画布上绘制它们。我正在使用 Angular 6。

我有这个:

 drawRow(row: Node[]) {
    row.forEach((item) => {
      this.addToCanvas(item);
    });
 }
Run Code Online (Sandbox Code Playgroud)

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

预先感谢您=)

Fél*_*net 4

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

如果您发现由于画布很大而出现滞后,您可以承诺addToCanvas。它将做的是推迟将来对这些函数的调用,从而允许页面在每次调用之间进行交互。

如果您必须在调用所有“addToCanvas”后执行某些操作,您可以使用 Promise.all()

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