Для выполнения нескольких асинхронных операций последовательно можно использовать как 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
.