merge:并行运行 observable 数组,在结果到达时一次发出一个结果:
我们会将结果记录到控制台。
const obsArray = [randomQuote(), getCatFacts(4), recipeSearch('oil')];
merge(...obsArray).subscribe(console.log);
forkJoin:并行运行 observables 数组,将结果作为数组发出
数组实际上是每个 observable 发出的最终值。这意味着它们必须都发出 > 0 的值并且必须全部完成。通常用于 HTTP GET 请求。
const obsArray = [randomQuote(), getCatFacts(4), recipeSearch('oil')];
forkJoin(obsArray).subscribe(console.log);
concat: 按顺序运行 observables 数组
等待obsArray[0]完成后再开始obsArray[1]等等...
const obsArray = [randomQuote(), getCatFacts(4), recipeSearch('oil')];
concat(...obsArray).subscribe(console.log);
运算符数组
这应该很像concat,尽管真正推荐/需要它的情况很少而且相差甚远。请改用concat。
pipe 的实现方式旨在为 typescript 提供一种方法来检查类型在整个功能组合中是否匹配。缺点是它似乎不适用于扩展运算符。我很确定忽略这个 TS 错误是安全的。
GitHub:.pipe fn type overloads no longer support using spread arguments #3989
const obsArray = [randomQuote(), getCatFacts(4), recipeSearch('oil')];
const operatorFunctions = obsArray.map(obs => rxops.switchMap(_ => obs));
const pipeline = of(1).pipe(
// @ts-ignore
...operatorFunctions
);