Недавно я выполнил испытание кода для компании, и меня попросили извлечь информацию из двух конечных точек API. Итак, моим первым решением было сделать что-то вроде следующего:

В приведенном выше потоке выборка для второй конечной точки вызывает функцию, которая выполняет выборку для первой конечной точки, а затем вызывает .then() на APIEndPointCallOne(). Это делает информацию из второго конечного вызова api доступной одновременно с первым конечным вызовом api. Однако это был не лучший способ сделать это. Лучший способ обеспечить одновременный возврат данных - использовать Promise.all. Эта функция принимает массив обещаний и возвращает массив решенных обещаний. Это делает что-то вроде приведенного выше, когда несколько конечных точек обрабатываются намного лучше и с ними легче работать. Приведенный выше код выглядел бы намного чище при использовании Promise.all(). На практике это выглядит так:

Использование Promise.all по-прежнему требует, чтобы вы связали два then вызовов функций. Разница в том, что вам нужно убедиться, что в первом then вызове вы передаете другой вызов Promise.all в функции обратного вызова. Последний вызов then возвращает массив результатов в том порядке, в котором асинхронные функции были переданы в исходный Promise.all. Эта функция значительно упрощает работу с несколькими запросами API, чтобы все данные были доступны одновременно.