javascript - 等待两个带有事件和循环的承诺
问题描述
我有一段这样的代码:
for(let j = 0; j < someNumber; j++) {
const forkedChildOne = fork("./child.js");
const childOne = await new Promise((resolve, reject) => {
forkedChildOne.on('message', (msg){
// someCode
resolve(msg);
});
});
}
for(let i = 0; i < someAnotherNumber; i++) {
const forkedChildTwo = fork("./child_numberTwo.js");
const childTwo = await new Promise((resolve, reject) => {
forkedChildTwo.on('message', (msg){
// someCode
resolve(msg);
});
});
}
但在这里,它首先等待第一个循环完成,然后进入第二个循环。但我需要并行运行它们。我怎样才能做到这一点?谢谢。
解决方案
async
将它们放在使用关键字定义的单独函数中。然后调用这两个函数,一个接一个。
const forkloop = async (number, js) {
for(let j = 0; j < number; j++) {
const forked = fork(js);
const child = await new Promise((resolve, reject) => {
forked.on('message', (msg){
// someCode
resolve(msg);
});
});
}
}
const init = async () => {
/* Do not await here */ forkloop(someNumber, './child.js');
/* Do not await here */ forkloop(someAnotherNumber, './child_numberTwo.js');
}
init();
推荐阅读
- python - Tkinter 小部件绑定调用函数不正确
- react-native - React Native 中嵌套文本的可访问性
- field - 尝试将搜索结果编写到 Netsuite 实体字段中
- wicket - 读取时具有隐藏内容但写入时可见的文本字段
- reactjs - 反应本机试图获取超出范围索引NaN(MYSQL数据库)的框架
- java - 使用 Spring REST 端点提供 yaml 文件
- grafana - 如何使用 curl 命令删除 grafana 仪表板?
- c++ - 单调计数整数的比较安全吗?
- django - OSMGeoAdmin:导入的 OSM 地图:点、线和路都可以,不是多面体
- android - 未解决的参考:TabLayoutMediator