Имеет ли значение оператор выравнивания при выполнении зависимых HTTP-вызовов? - PullRequest
1 голос
/ 10 мая 2019

При выполнении нескольких зависимых вызовов HTTP API с использованием RxJS общепринятым ответом является использование mergeMap () / flatMap () для объединения вызовов и завершения одного потока результатов. Мне интересно, почему mergeMap () является оператором выбора. Это на самом деле лучше или хуже, чем любой из 3 других операторов сплющивания? На мой взгляд, вы можете использовать любой из четырех (объединить, объединить, переключить или исчерпать) и в итоге получить те же результаты / надежность.

В Angular вы можете сделать звонок, например:

function getCall(id) {
    return this.http.get<string>('http://www.apiurl.com/' + id);
}

Это будет только когда-либо возвращать одну наблюдаемую, которая испустит строковое значение. Так что-то вроде

getCall(1).pipe(
    mergeMap(() => getCall(2))
).subscribe();

должен вести себя точно так же, как

getCall(1).pipe(
    concatMap(() => getCall(2))
).subscribe();

, поскольку мы можем сделать предположение, что getCall(id) только когда-либо возвращает ОДНУ наблюдаемую.

Так ли это на самом деле имеет значение, какой оператор выравнивания кто-то использует в контексте HTTP-вызова.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...