При создании веб-приложения я сталкивался с этой проблемой бесчисленное количество раз. Вам нужно дождаться возврата вызовов API для выполнения других действий.
Допустим, мы пытаемся получить пользователей github с помощью git API, и для каждого пользователя мы хотим получить количество связанных репозиториев. Как бы мы это сделали? ну есть несколько способов
Использование mergeMap
как вы можете видеть здесь, мы используем два оператора: map и mergeMap.
Оператор карты выполнит действие для каждого извлеченного пользователя: он изменит результат.
Здесь mergeMap помогает нам, вытаскивая каждого пользователя и подписываясь на внутренний наблюдаемый объект (репозитории для каждого пользователя). Теперь у нас есть два вложенных наблюдаемых объекта, и наш код стал немного более сжатым и читаемым.
Использование forkJoin
Здесь forkJoin подпишется на все вызовы в параллельном режиме и будет ждать их возврата, чтобы вернуть их вам.
Следовательно, он возвращает массив данных со всеми результатами всех вызовов.
Поэтому, если вы хотите объединить вызовы в цепочку, вам следует использовать mergeMap (например, вы хотите, чтобы репозитории для каждого пользователя), если вам нужны два независимых вызова, чтобы вернуться и одновременно избавиться от их результата, тогда вы должны пойти с forkJoin.