В приведенном ниже примере мы проходим через массив идентификаторов пользователей, чтобы получить информацию о пользователе.

Наивный подход может состоять в том, чтобы ждать каждого ответа один за другим.

❌ Неправильный и медленный путь

✔️ Быстрый способ

🧐 Как это работает

Быстрый метод использует преимущества метода Promise.all(). Как это работает, сначала извлекая все данные, а затем используя Promise.all() для разрешения/отклонения позже.

Делая это, нам не нужно ждать каждого ответа один за другим.

Другой пример двух отдельных выборок

Допустим, мы хотим получить пользовательские данные и их записи. Вот два способа сделать это.

❌ Быстро, но медленно

Этот метод хорошо работает в большинстве случаев, но если второе обещание будет отклонено, могут произойти плохие вещи. Причина, по которой он не работает медленно, заключается в том, что если второе обещание отклонено, первое обещание все еще выполняется в течение всего времени.

Пользователь Stack Overflow @T.J. Crowder объясняет, что параллельные паттерны Promise здесь лучше всего.

✔️ Быстро и быстро выходит из строя

Мы используем Promise.all(), потому что когда промис отклоняется, он немедленно выдает ошибку, не дожидаясь других промисов.

Может показаться заманчивым использовать чистый async/await для обработки нескольких промисов, но Promise.all() по-прежнему остается нашим лучшим выбором.

Первоначально опубликовано на https://dev.to 7 мая 2022 г.