Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

213
Visualizações
¿Cómo esperar a que el proceso principal envíe datos?

Soy nuevo en el uso de tenedores y me preguntaba
si hay una forma de esperar a que el proceso principal envíe datos al proceso secundario?

tal vez algo como esto

índice.js:

 var fork = require('child_process').fork; var child = fork(__dirname + '/index 2.js'); child.on('message', function (response) { console.log(response); }); async function out(){ child.send(50); await new Promise(r => setTimeout(r, 3000)); //sleeps for 3000ms child.send(30); } out();

index2.js:

 let a=0; function wait_and_listen(){ let temp_data; process.on('message',(data)=>{temp_data=data}); return temp_data; } a+=wait_and_listen(); a-=wait_and_listen(); process.send(a); process.exit();
about 4 years ago · Juan Pablo Isaza
2 Respostas
Responde à pergunta

0

Puede usar la promesa en el script de su hijo para esperar a que el padre envíe datos

No estoy seguro, pero tal vez algo como esto:

 let a = 0; async function wait_and_listen() { return await new Promise((resolve) =>{ process.on('message', (data) => { resolve(data); }); }); } (async()=>{ a += await wait_and_listen(); a -= await wait_and_listen(); process.send(a); process.exit(); })();

Editar:
de acuerdo con OP, la solución anterior crea múltiples oyentes, por lo que para evitar eso, use .once en lugar de .on de esta manera:

 let a = 0; async function wait_and_listen() { return await new Promise((resolve) =>{ process.once('message', (data) => { resolve(data); }); }); } (async()=>{ a += await wait_and_listen(); a -= await wait_and_listen(); process.send(a); process.exit(); })();
about 4 years ago · Juan Pablo Isaza Relatório

0

simplemente usa el "process.on('message') una vez y cuenta sus llamadas.

 // variable to detect if its the first call let nthcall = 0; // variable to accumulate data let a = 0; // work functon to be called when data is received from the parent function work(data) { nthcall++; // feel free to do wwhatever you like with your data depending on nthcall value a += data; if (nthcall == 1) { console.log('first time i got data', data); return; } if (nthcall == 4) { console.log('last time i got data', data); process.send(a); process.exit(0); } console.log('i got data', data); } process.on('message', work);
about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda