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

221
Visualizações
Usar cascada asíncrona para pasar argumentos

Considere un caso en el que el valor de devolución de llamada de la primera función en cascada debe usarse varias veces en funciones posteriores para finalmente fusionar los resultados. En el siguiente código, baseFn debe devolver una matriz en la devolución de llamada, que luego debe procesarse elemento por elemento como se indica en subFn1 y subFn2. A partir de entonces, las devoluciones de llamada de subFn1 y subFn2 deben agregarse a una nueva matriz para producir el resultado final. He intentado ver si hay una manera de lograr esto usando async.series y async.apply, pero no he podido avanzar mucho más. Por favor avise.

 async.waterfall ([ function baseFn(baseCb) { //a method that gets an array of elements return (null, elementArray); }, function subFn1(elemArr, subFnCb) { var elem = elemArr[0]; //a method that returns processed element return (null, proc_elem1); }, function subFn2(elemArr,subFnCb) { var elem = elemArr[1]; //a method that returns processed element return (null, proc_elem2); }, function aggOut() {} ], function getOutput (err, out) { console.log(out); })
over 4 years ago · Santiago Trujillo
2 Respostas
Responde à pergunta

0

Dado que subFn1() y subFn2() dependen de baseFn, es mejor usar async.auto() porque podemos especificar la dependencia de subFn1 y subFn2 es baseFn(). Aquí está el código:

 var async = require('async'); async.auto({ baseFn: function(autoCb) { var elementArray = ['one', 'two']; autoCb(null, elementArray); }, subFn1: ['baseFn', function(results, autoCb) { var elem = results.baseFn[0]; console.log('subFn1', elem); var proc_elem1 = 'proc_elem1'; autoCb(null, proc_elem1); }], subFn2: ['baseFn', function(results, autoCb) { var elem = results.baseFn[1]; console.log('subFn2', elem); var proc_elem2 = 'proc_elem2'; autoCb(null, proc_elem2); }] }, function(err, results) { console.log('results', results); });

El resultado se verá así (tenga en cuenta que el orden de finalización de subFn1 y subFn2 no está garantizado ya que se ejecutan en paralelo. Sin embargo, el objeto final de 'resultados' en la devolución de llamada final tendrá todos los resultados):

 subFn1 one subFn2 two results { baseFn: [ 'one', 'two' ], subFn1: 'proc_elem1', subFn2: 'proc_elem2' }
over 4 years ago · Santiago Trujillo Relatório

0

const baseFn = function(baseCb) { // ... return baseCb(elementArray); } baseFn(function(elemArr) { // since subFn1 and subFn2 both need elemArr independently, // lets use async.parallel here. async.parallel([ function subFn1(elemArr, subFnCb) { // ... return subFnCb(null, proc_elem1); }), function subFn2(elemArr, subFnCb) { // ... return subFnCb(null, proc_elem2); }), ], function(err, result) { // async.parallel callback with proc_elem1 and 2 in result. // you can now create your final result with elementArray // and both proc_elem. console.log([elemArr, result[0], result[1]]); }); });
over 4 years ago · Santiago Trujillo 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