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

192
Visualizações
¿Cómo puedo ejecutar una función asíncrona dentro de un bucle y obtener un valor de retorno (Node.js/Javascript)?

Tengo una función que contiene un ciclo que itera sobre una matriz de objetos. En cada iteración, necesito ejecutar una función asíncrona y recuperar un valor de la solicitud; sin embargo, necesito que cada iteración del bucle for haga una pausa y espere la respuesta antes de continuar.

Por ejemplo:

 const tokeniseCustomer = async () => { const object [{"val1":1,"val2":2},{"val1":"a","val2":"b"}]; for (let index = 0; index < object.length; index += 1) { const data = await getData(object[index]); console.log(data); //wait for data before progressing to next loop iteration } };

Pensé que al agregar la palabra clave "esperar" en el ejemplo anterior, el bucle esperaría a que la función getData devolviera un valor.

El problema con el código anterior es que no se registra nada en la consola. Intenté solucionar este problema agregando un registro adicional. Por ejemplo:

 const tokeniseCustomer = async () => { const object [{"val1":1,"val2":2},{"val1":"a","val2":"b"}]; for (let index = 0; index < object.length; index += 1) { console.log('a') const data = await getData(object[index]); console.log('b'); console.log(data); //wait for data before progressing to next loop iteration } };

El código anterior registra 'a' pero no 'b'.

Así es como se ve mi función getData:

 const getData = async (object) => { //get the data from MSSQL and return it const result = await MSSQLFUNCTION(object); return result; };

Realmente no estoy seguro de lo que estoy haciendo mal. ¿Me equivoco al usar for loops con await?

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

0

Await solo se puede usar dentro de una función asíncrona. https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/await#:~:text=It%20can%20only%20be%20used%20inside%C2%A0an%20async%20function

 function sleep(ms) { return new Promise((resolve) => setTimeout(resolve, ms)); } const object = [ { val1: 1, val2: 2 }, { val1: "a", val2: "b" }, ]; (async () => { for (let index = 0; index < object.length; index += 1) { console.log("a"); const data = await sleep(5000) console.log("b"); console.log(data); } })();

about 4 years ago · Juan Pablo Isaza Relatório

0

¿Puede probar el fragmento que se menciona a continuación? Esto básicamente ejecuta un reductor sobre la matriz y espera a que se complete la promesa anterior antes de ejecutar la siguiente.

 const tokeniseCustomer = async () => { const object = [{"val1":1,"val2":2},{"val1":"a","val2":"b"}]; object.reduce(async (acc, curr) => { await acc; return getData(curr); }, Promise.resolve(null)) }
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