如何在 RxJS 中使用 concat 运算符,但忽略第一个可观察的所有排放

Jak*_*źny 1 javascript rxjs reactive

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

常量 obs1 = 计时器(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,但我正在寻找一个通用的解决方案,它不需要我知道从可观察对象发出的元素数量。

mar*_*tin 6

您只需使用ignoreElements().

concat(obs1.pipe(ignoreElements()), obs2).subscribe(...)
Run Code Online (Sandbox Code Playgroud)

obs1是否发出任何通知并不重要nextobs1只需要完成即可。