我正在使用一个Observable链,我对下一个或错误值不感兴趣,只有当链完全完成时。点击订阅方法并为下一个提供2个noops并且出错是错误的,因此我可以提供onComplete
回调。
例如:
let isRunning = true;
Observable.from([1000, 2000, 3000])
.concatMap(value => Observable.timer(value)
.subscribe(
() => {},
() => {},
() => isRunning = false;
);
我想要的是看起来像这样的东西
let isRunning = true;
Observable.from([1000, 2000, 3000])
.concatMap(value => Observable.timer(value)
.onComplete(() => isRunning = false);
答案 0 :(得分:2)
不,没有捷径。但是,您可以传递null
而不是空函数。
obs$.subscribe(null, null, () => this.isRunning = false);
如果你想要某种技巧,你也可以这样做
obs$.last().subscribe(() => this.isRunning = false);
例如,如果您需要访问完成处理程序中的最后一个发射值,这将是有意义的。
答案 1 :(得分:1)
最短的形式是使用观察者对象。
obs.subscribe({ complete: () => isRunning = false });