假设我们有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
只需完成即可。