«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > асинхронный / ожидание

асинхронный / ожидание

Опубликовано 1 ноября 2024 г.
Просматривать:677

async / await

асинхронный / ожидание

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 гораздо понятнее.

Пример 2. Заказ еды из ресторана.

Структура 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!
Заявление о выпуске Эта статья воспроизведена по адресу: https://dev.to/wolfmath/async-await-13bn?1. Если есть какие-либо нарушения, свяжитесь с [email protected], чтобы удалить их.
Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3