Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/417.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 通过事件和循环等待两个承诺_Javascript_Node.js_Loops_Events_Child Process - Fatal编程技术网

Javascript 通过事件和循环等待两个承诺

Javascript 通过事件和循环等待两个承诺,javascript,node.js,loops,events,child-process,Javascript,Node.js,Loops,Events,Child Process,我有一段代码如下: for(let j = 0; j < someNumber; j++) { const forkedChildOne = fork("./child.js"); const childOne = await new Promise((resolve, reject) => { forkedChildOne.on('message', (msg){ // someCode

我有一段代码如下:

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);
        });
    });
}
for(设j=0;j{
forkedChildOne.on('message',(msg){
//一些代码
解决(msg);
});
});
}
for(设i=0;i{
forkedChildTwo.on('message',(msg){
//一些代码
解决(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();
const forkloop=async(数字,js){
for(设j=0;j{
forked.on('message',(msg){
//一些代码
解决(msg);
});
});
}
}
const init=async()=>{
/*不要在这里等待*/forkloop(someNumber,'./child.js');
/*不要在这里等待*/forkloop(someAnotherNumber'./child_numberTwo.js');
}
init();

您能尝试使用Promise.all吗?请尝试下面的代码。我还没有测试过它,但我相信它应该能工作

设arrayRequests=[ forkedChildOne.on('message'), forkedChildTwo.on('message')

返回Promise.all(arrayRequests)。然后(results=>{

let resultForkedChildOne = results[0];
let resultForkedChildTwo = results[1]; 
}))


你不能同时运行两个循环,谢谢。成功了。