async / await é uma maneira mais recente de escrever código assíncrono em comparação com promessas. As principais vantagens do async/await são melhor legibilidade e evitar encadeamento de promessas. As promessas podem se tornar longas, difíceis de ler e podem conter retornos de chamada profundamente aninhados que podem ser difíceis de depurar.
Lembre-se de nossa busca anterior.
fetch('https://jsonplaceholder.typicode.com/todos/1') .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error('Error:', error)) .finally(() => console.log('All done'));
Usando async/await, o código pode ser refatorado para ficar assim:
async function fetchData() { try { const response = await fetch('https://jsonplaceholder.typicode.com/todos/1'); const data = await response.json(); console.log(data); } catch (error) { console.error('Error:', error); } finally { console.log('All done'); } } fetchData();
Embora possa haver mais algumas linhas de código, esta versão é mais fácil de ler porque se assemelha a uma função síncrona normal. Além disso, se as funções dentro das instruções .then() fossem mais complexas, a legibilidade e a depuração seriam ainda mais impactadas. O exemplo async/await é muito mais claro.
Uma função async/await tem duas partes essenciais: async e await. A palavra-chave async é adicionada antes de uma declaração de função e await é usada quando uma tarefa assíncrona começa.
Vamos ilustrar isso com um exemplo de pedido de comida em um restaurante:
// Simulate the order process with async/await async function foodOrder() { console.log("Ordering food..."); await new Promise(resolve => setTimeout(resolve, 2000)); // Wait 2 seconds for food to be prepared return "Your food is ready!"; } // Simulate the eating process function eatFood(order) { console.log(order); // This logs "Your food is ready!" console.log("Enjoying the meal!"); } // Simulate continuing the conversation function continueConversation() { console.log("While waiting, you continue chatting with friends..."); } async function orderFood() { console.log("You've arrived at the restaurant."); const order = await foodOrder(); // Place the order and wait for it to be ready continueConversation(); // Chat while waiting eatFood(order); // Eat the food once it arrives } orderFood();
A saída será
You've arrived at the restaurant. Ordering food... While waiting, you continue chatting with friends... Your food is ready! Enjoying the meal!
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3