Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Dúvida

Insira aqui a descrição dessa imagem para ajudar na acessibilidade Por que o console.log() mostra "[ Promise { }, Promise { }, Promise { } ]"? O await não faz com que todas as promessas sejam resolvidas?

1 resposta
solução!

Oi Luidi,

O await dentro do map faz com que cada promessa de leitura de arquivo seja resolvida individualmente, mas o map em si retorna um novo array de promessas, e não os resultados dessas promessas.

Por isso, o console.log mostra um array de Promise pendentes. 🤔

Para obter os resultados, você precisa usar Promise.all para aguardar a resolução de todas as promessas do array.

Veja um exemplo:

async function lerMultiplosArquivos(arrayDeCaminhos) {
  const arrayDePromessas = arrayDeCaminhos.map(async (caminho) => {
    return await fs.promises.readFile(caminho, "utf-8");
  });
  const resultados = await Promise.all(arrayDePromessas);
  console.log(resultados);
}

Neste exemplo, Promise.all(arrayDePromessas) aguarda que todas as promessas em arrayDePromessas sejam resolvidas e retorna um novo array com os resultados. 👍

Para saber mais: Documentação do Promise.all no MDN -

Continue explorando e aprofundando seus conhecimentos! 💪