alexbuki
@alexbuki
программист js

В чем отличие в выполнении асинхронных операций?

Вопрос в тестовом задании:
В чем отличие в выполнении асинхронных операций?
await fetchAPI1(id);
await fetchAPI2(id);
и
await Promise.all([fetchAPI1(id), fetchAPI2(id)])
  • Вопрос задан
  • 119 просмотров
Решения вопроса 1
Xuxicheta
@Xuxicheta
инженер
1.
Запускается fetchAPI1,
ожидание завершения fetchAPI1,
запускается fetchAPI2,
ожидание завершения fetchAPI2

2.
Запускается fetchAPI1,
запускается fetchAPI2,
ожидание завершения fetchAPI1,
ожидание завершения fetchAPI2.
(Если fetchAPI2 завершился раньше, то промис request2 находится в состоянии fulfilled и await пройдет сразу же, в конце текущего евентлуп цикла )

3.
Запускается fetchAPI1,
запускается fetchAPI2,
ожидание завершения fetchAPI1 и fetchAPI1, возврат массива результатов fetchAPI1 и fetchAPI1.

Разница между 2 и 3 совсем небольшая.
Только все это можно переписать корректно так
const fetchData = id => {
  return Promise.all([fetchAPI1(id), fetchAPI2(id)])
    .then(([response1, response2]) => ({response1, response2}));
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы