假设我们有2个可观察值。

const obs1 = timer(1000);
const obs2 = of(1,2,3)

如果我想等到obs1完成,显然可以使用concat运算符。

obs1.pipe(concat(obs2))。subscribe(console.log);

要么

concat(obs1,obs2).subscribe(console.log);

它将正常工作(保留了顺序),但仍会记录从第一个obs发出的“ 0”。有没有一种方法可以强制某些订阅者下达订单,但忽略给定可观察对象的发射? (例如,只能看到“链”中最后一个可观察到的值)。

在这种特殊情况下,我知道需要多少个值,因此我可以简单地使用skip / takeLast,但是我正在寻找一种通用解决方案,它不需要我知道可观察对象发出的元素数量。

最佳答案

您只能使用ignoreElements()

concat(obs1.pipe(ignoreElements()), obs2).subscribe(...)


obs1是否发出任何next通知都没有关系。 obs1只需完成即可。

08-08 05:19