"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > asíncrono/espera

asíncrono/espera

Publicado el 2024-11-01
Navegar:171

async / await

asíncrono/espera

async / await es una forma más nueva de escribir código asincrónico en comparación con las promesas. Las principales ventajas de async/await son una mejor legibilidad y evitan el encadenamiento de promesas. Las promesas pueden volverse largas, difíciles de leer y pueden contener devoluciones de llamadas profundamente anidadas que pueden ser difíciles de depurar.

Ejemplo

Recuerde nuestra búsqueda de antes.

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, el código se puede refactorizar para que tenga este aspecto:

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();

Si bien pueden ser algunas líneas más de código, esta versión es más fácil de leer porque se parece a una función síncrona normal. Además, si las funciones dentro de las declaraciones .then() fueran más complejas, la legibilidad y la depuración se verían aún más afectadas. El ejemplo de async/await es mucho más claro.

Ejemplo 2: pedir comida en un restaurante

Estructura de async/await

Una función async/await tiene dos partes esenciales: async y await. La palabra clave async se agrega antes de una declaración de función y await se usa cuando comienza una tarea asincrónica.

Ilustremos esto con un ejemplo de pedir comida en un 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();

La salida será

You've arrived at the restaurant.
Ordering food...
While waiting, you continue chatting with friends...
Your food is ready!
Enjoying the meal!
Declaración de liberación Este artículo se reproduce en: https://dev.to/wolfmath/async-await-13bn?1 Si hay alguna infracción, comuníquese con [email protected] para eliminarla.
Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3