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

264
Visualizações
async.queue con función de controlador asíncrono - argumento de devolución de llamada indefinido

Tengo una cola que consume comandos basados en https://caolan.github.io/async/v3/docs.html#queue con una función asincrónica, porque el procesamiento requiere async/await.

 this.commandQueue = async.queue(async (task, callback) => { await this.sleep(10); // Long running async stuff callback(null, data); }, 1);

El resultado de la tarea se devolverá a través de 'datos'.

 this.commandQueue.push( { ...command data }, function (err, data) { // called when task finished - callback called ... // data is undefined });

Problema: 'datos' no está definido.

Cuando elimino async /await de la sección de función superior, funciona, pero no puedo llamar a mi tarea de ejecución prolongada :-(

No tengo idea de cómo resolver este problema. ¿Alguna pista?

about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

Consulte aquí https://caolan.github.io/async/v3/global.html . La función asíncrona no obtendrá el argumento de devolución de llamada de ES2017. Echa un vistazo a la versión de ES que estás usando.

La solución alternativa es hacer que la función del trabajador no sea "asincrónica" sino basada en promesas. Si alguien sabe cómo solucionarlo sin cambiar a promesas, se agradecería un comentario.

 // async bases async function worker(opts, callback) { // callback will be undefined} const q = async.queue(worker) //promised based function worker(opts, callback) { // callback will work as expected} const q = async.queue(worker)

Dondequiera que aceptemos una función asíncrona de estilo Node, también aceptamos directamente una función asíncrona ES2017. En este caso, a la función asíncrona no se le pasará un argumento de devolución de llamada final, y cualquier error generado se usará como el argumento err de la devolución de llamada implícita, y el valor de retorno se usará como valor de resultado. (es decir, un rechazo de la Promesa devuelta se convierte en el argumento de devolución de llamada err, y un valor resuelto se convierte en el resultado).

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