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

201
Visualizações
How can I run an asynchronous function inside a loop and get a return value (Node.js/Javascript)

I have a function containing a loop that iterates over an array of objects. On each iteration, I need to execute an asynchronous function and get a value back from the request however, I need each iteration of the for loop to pause and wait for the response before continuing.

For example:

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
}
};

I thought by adding the "await" keyword in the above example, the loop would wait for the getData function to return a value.

The problem with the above code is that nothing gets logged to the console. I tried troubleshooting this by adding some extra logging. For example:

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
}
};

The above code logs 'a' but not 'b'.

This is what my getData function looks like:

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

I am really not sure what I am doing wrong. Am I incorrect in using for loops with await?

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

0

Await can only be used inside an async function. 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

Can you try the snippet mentioned below: This basically runs a reducer over the array and waits for previous promise to complete before executing next one

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