--- tags: javascript, fetch, async & await --- # Async & Await ![async/await](https://i.imgur.com/qY6EYas.png) ## Conceito Async & Await existem para facilitar o uso das nossas promises, isto é, deixar o código mais simples em vez de ter um monte de **.then** e **.catch**. É usado para dizer que tal parte do nosso código é assíncrono e tais partes do nosso código devem ser esperadas até serem terminadas para assim mover adiante. ## Uso Sempre precisamos usar ele em funções, sejam elas funções normais, anônimas ou arrows. Quando estamos criando nossa função assíncrona, precisamos da palavra chave **async** antes da atribuição dela, para assim dizermos ao JavaScript que essa função em questão deve ser lida como assíncrona. Dentro dela colocamos os nossos comandos que queremos executar conforme as respostas da promise vão chegando, para isso usamos o **await** antes deles. **Tá, mas para que o await serve?** O await serve para dizermos que precisamos esperar que a resposta daquele comando venha para executarmos o que estiver abaixo dele. Na prática isso é bem simples **Agora, se queremos dar uma mensagem de erro ou mostrar o erro que está dando caso a resposta da nossa promise não seja bem sucedida, o que fazemos?** Para isso temos duas palavras chaves: o **try {}** e o **catch (err) {}**. - **try {}** Serve como uma tentativa de fazer o que queremos fazer se a resposta da promise for bem sucedida. Englobamos nosso código dentro das chaves para isso. - **catch (err) {}** Serve para lançarmos o erro ou executarmos um comando caso o erro aconteça. Novamente, englobamos nosso código entre as chaves para isso.