В приведенном ниже примере мы проходим через массив идентификаторов пользователей, чтобы получить информацию о пользователе.
Наивный подход может состоять в том, чтобы ждать каждого ответа один за другим.
❌ Неправильный и медленный путь
✔️ Быстрый способ
🧐 Как это работает
Быстрый метод использует преимущества метода Promise.all(). Как это работает, сначала извлекая все данные, а затем используя Promise.all() для разрешения/отклонения позже.
Делая это, нам не нужно ждать каждого ответа один за другим.
Другой пример двух отдельных выборок
Допустим, мы хотим получить пользовательские данные и их записи. Вот два способа сделать это.
❌ Быстро, но медленно
Этот метод хорошо работает в большинстве случаев, но если второе обещание будет отклонено, могут произойти плохие вещи. Причина, по которой он не работает медленно, заключается в том, что если второе обещание отклонено, первое обещание все еще выполняется в течение всего времени.
Пользователь Stack Overflow @T.J. Crowder объясняет, что параллельные паттерны Promise здесь лучше всего.
✔️ Быстро и быстро выходит из строя
Мы используем Promise.all(), потому что когда промис отклоняется, он немедленно выдает ошибку, не дожидаясь других промисов.
Может показаться заманчивым использовать чистый async/await для обработки нескольких промисов, но Promise.all() по-прежнему остается нашим лучшим выбором.
Первоначально опубликовано на https://dev.to 7 мая 2022 г.