使用RxJS进行多个从属HTTP API调用时,通常可接受的答案是使用mergeMap()/ flatMap()链接这些调用并以一个结果流结束。我想知道为什么WHY mergeMap()是首选的运算符。这实际上是否比其他三个扁平化运算符更好或更糟?在我看来,您可以使用这四种方法中的任何一种(合并,合并,切换或穷举),并最终获得相同的结果/可靠性。
在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调用的上下文中,有人使用拼合运算符实际上没有任何区别。