"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > assíncrono / aguardar

assíncrono / aguardar

Publicado em 01/11/2024
Navegar:770

async / await

assíncrono / aguardar

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.

Exemplo

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.

Exemplo 2: Pedindo comida em um restaurante

Estrutura de assíncrono/espera

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!
Declaração de lançamento Este artigo é reproduzido em: https://dev.to/wolfmath/async-await-13bn?1 Se houver alguma violação, entre em contato com [email protected] para excluí-lo.
Tutorial mais recente Mais>

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