javascript - 如何执行数组在平行下
问题描述
我有一个带有回调函数的数组,所以一个Array<Function> | Array<AsyncFunction>
. 我正在尝试找到一种方法并行调用这些回调
Promise.all
如果我有一份承诺清单,我知道会这样做。但我并没有成功地用我的投入来完成这项工作
所以要添加更多细节:
假设我有一组像这样的匿名函数
let callbacks = [
() => {console.log('callback')},
() => {console.log('another callback');
() => {console.log('final callback');
];
并行执行这些回调的最佳方法是什么?
解决方案
Javascript 在设计上是单线程语言。所以引擎只能同时解析一个函数。
这些函数被堆叠到调用堆栈中并由事件循环处理。这意味着,即使有 Promise,引擎也一次只处理一个函数。
一旦所有的承诺都得到解决Promise.all([...])
,您就可以委托处理这些调用以继续运行您的代码(在then
方法内部或等待)。
这并不意味着所有的 Promise 都是并行执行的。
通过使用称为Web Workers的多引擎系统,有一种解决方法具有这种行为,https://www.sitepoint.com/javascript-web-workers/
推荐阅读
- optimization - 我可以强制 Jena (ARQ) 执行我的查询计划吗?
- java - 如何手动创建具有依赖关系的 Java 应用程序
- angular - observable 的模拟包含缺失值
- javascript - 无法使用 NEXTJS 在堆栈中读取 JSX 内的反应状态
- python - 使用过滤器在 OpenCV 中保存视频
- c# - NPOI 破坏 xlsm 工作簿
- python - 我收到错误“TypeError:'type' 对象不支持项目分配”
- vb.net - 格式化时间跨度,小时数超过 24,而不是使用天数部分
- elasticsearch - 如果实体索引是基于时间的,如何使用 ElasticsearchEntityMapper?
- python - python - 如何在python列表中找到在n个组合中总和为给定数字的数字组合?