async/await — это новый способ написания асинхронного кода по сравнению с промисами. Основными преимуществами async/await являются улучшенная читаемость и отсутствие цепочек обещаний. Промисы могут стать длинными, трудными для чтения и содержать глубоко вложенные обратные вызовы, которые сложно отладить.
Вспомните нашу предыдущую выборку.
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'));
Используя async/await, код можно отрефакторить так, чтобы он выглядел следующим образом:
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();
Хотя это может быть еще несколько строк кода, эту версию легче читать, поскольку она напоминает обычную синхронную функцию. Кроме того, если бы функции внутри операторов .then() были более сложными, удобочитаемость и возможность отладки пострадали бы еще больше. Пример async/await гораздо понятнее.
Функция async/await состоит из двух основных частей: async и await. Ключевое слово async добавляется перед объявлением функции, а await используется при запуске асинхронной задачи.
Проиллюстрируем это на примере заказа еды из ресторана:
// 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();
Выход будет
You've arrived at the restaurant. Ordering food... While waiting, you continue chatting with friends... Your food is ready! Enjoying the meal!
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3