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