1
resposta

Async espera uma promessa?

let livros = [];
const endPointDaApi = 'https://guilhermeonrails.github.io/casadocodigo/livros.json';

getBuscarLivrosDaApi()

async function getBuscarLivrosDaApi(){
    const res = await  fetch(endPointDaApi);
    livros = await res.json();

No codigo acima eu entendi que a function precisa funcionar de maneira assincrona pois espera uma promessa de resposta que seria o await certo? então eu leio o codigo "de baixo pra cima" livros vai esperar a resposta de res, e res vai esperar a resposta do endPointDaApi, para assim dar a promessa a function? Essa lógica está correta?

1 resposta

Oi Gabriela, tudo bem?

Sua linha de raciocínio está correta.

A palavra-chave async indica que a função retornará uma Promessa. Quando usamos await dentro de uma função async, estamos dizendo para o JavaScript esperar a resolução da Promessa antes de continuar com a execução do código.

No seu código, a função getBuscarLivrosDaApi é declarada como assíncrona (async), o que significa que ela retornará uma Promessa.

Dentro dessa função, você faz uma requisição para a API usando fetch(endPointDaApi). O fetch também retorna uma Promessa que resolve para a resposta da requisição. Como você quer esperar que essa Promessa seja resolvida antes de continuar, você usa await antes do fetch.

Depois disso, você tem a resposta da requisição (res), mas essa resposta não está no formato JSON ainda. Para converter a resposta para o formato JSON, você usa res.json(), que também retorna uma Promessa. Novamente, você usa await para esperar que essa Promessa seja resolvida.

Finalmente, você atribui o resultado (os livros no formato JSON) à variável livros.

Então, sim, sua leitura do código está correta: a função getBuscarLivrosDaApi retorna uma Promessa que resolve para a lista de livros no formato JSON. Essa Promessa é resolvida apenas depois que as Promessas retornadas pelo fetch e pelo res.json() são resolvidas.

Espero ter ajudado.

Um abraço e bons estudos.