javascript - Javascript中的forEach并行?
问题描述
我想同时对数组中的所有元素应用一个函数,我不想一个一个地应用它,我的意思是,顺序。这是因为我有大量元素,我想同时在 Canvas 中绘制它们。我正在使用 Angular 6。
我有这个:
drawRow(row: Node[]) {
row.forEach((item) => {
this.addToCanvas(item);
});
}
我想将行的所有元素并行添加到画布中。是否需要安装一些库来执行此操作,或者我可以仅使用纯 JavaScript 来执行此操作...?什么是正确的方法?
提前谢谢你=)
解决方案
就像评论中提到的 Pointy 一样,javascript 主要是单线程的。
如果你因为画布很大而发现延迟,你可以promisify addToCanvas
。它将做的是在将来推迟对这些函数的调用,允许页面在每次调用之间进行交互。
如果在调用所有“addToCanvas”之后您必须做某事,您可以使用
Promise.all()
要进行真正的并行工作,您需要使用 WebWorker,但这些都有局限性。它们无法访问 DOM,只能与异步消息 API 进行交互。根据您的需要,它可能是一个解决方案。如果您想在后台进行长时间计算,这很有用。
推荐阅读
- docker - Cypress setCookie 在 Docker 容器中无法与 Firefox 一起使用
- kubernetes - 加载大地图时,Hazelcast 在 OpenShift 中无法进行活性探测
- mysql - MySQL全文搜索 - 无法按字符搜索
- python - 从 Curl 但不从 Python 请求中获取响应
- arrays - C中的String和Null终止字符数组之间有什么区别吗
- c# - 如何实现对象的事件循环?
- java - 如何从服务中获取活动
- pdf - 将pdf的颜色转换为一维颜色空间(ghostscript)
- db2 - 如何在没有备份文件的情况下恢复 IBM DB2 数据库
- excel - 使用 VBA 修复图形的 y 值范围