Для выполнения нескольких асинхронных операций последовательно можно использовать как then, так и async/await.

С использованием then можно выполнить несколько асинхронных операций последовательно, создавая цепочку промисов с помощью метода then. Код будет выглядеть примерно так:

fetch("https://example.com/data1")
  .then((response1) => response1.json())
  .then((data1) => {
    // выполнение операций с data1
    return fetch("https://example.com/data2")
  })
  .then((response2) => response2.json())
  .then((data2) => {
    // выполнение операций с data2
    return fetch("https://example.com/data3")
  })
  .then((response3) => response3.json())
  .then((data3) => {
    // выполнение операций с data3
  })
  .catch((error) => console.error(error))

В этом примере мы отправляем три запроса на сервер, используя метод fetch, и последовательно обрабатываем результат каждого запроса с помощью метода then. Если какой-либо запрос завершается с ошибкой, то мы перехватываем исключение с помощью метода catch.

С использованием async/await можно выполнить несколько асинхронных операций последовательно, используя цикл for..of или метод reduce. Код будет выглядеть примерно так:

async function getData() {
  try {
    const response1 = await fetch("https://example.com/data1")
    const data1 = await response1.json()
    // выполнение операций с data1
 
    const response2 = await fetch("https://example.com/data2")
    const data2 = await response2.json()
    // выполнение операций с data2
 
    const response3 = await fetch("https://example.com/data3")
    const data3 = await response3.json()
    // выполнение операций с data3
 
    return [data1, data2, data3]
  } catch (error) {
    console.error(error)
    return null
  }
}

В этом примере мы используем async/await для выполнения трех асинхронных операций последовательно. Мы отправляем запросы на сервер с помощью fetch и ожидаем завершения каждой операции с помощью await. Если операция завершается успешно, то мы преобразуем ответ в формат json и выполняем необходимые операции с данными. Если операция завершается с ошибкой, то мы перехватываем исключение с помощью catch, выводим сообщение об ошибке в консоль и возвращаем null. В конце функции мы возвращаем массив, содержащий результаты выполнения всех трех запросов.

Таким образом, для выполнения нескольких асинхронных операций последовательно можно использовать как then, так и async/await.


Назад