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.
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.
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!
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