Javascript 有没有一种更短的方法来提供一个可观察的onComplete处理程序?
我正在处理一个可观察的链,我对下一个或错误值不感兴趣,只有当链完全完成时。点击subscribe方法,为next和error提供2个noop,这样我就可以提供一个Javascript 有没有一种更短的方法来提供一个可观察的onComplete处理程序?,javascript,rxjs,Javascript,Rxjs,我正在处理一个可观察的链,我对下一个或错误值不感兴趣,只有当链完全完成时。点击subscribe方法,为next和error提供2个noop,这样我就可以提供一个onComplete回调,这感觉是不对的 例如: let isRunning = true; Observable.from([1000, 2000, 3000]) .concatMap(value => Observable.timer(value) .subscribe( () => {}, (
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);
不,没有捷径。但是,您可以传递
null
而不是空函数
obs$.subscribe(null, null, () => this.isRunning = false);
如果你想要某种把戏,你也可以做
obs$.last().subscribe(() => this.isRunning = false);
例如,如果您需要访问完成处理程序中最后发出的值,则这是有意义的 不,没有捷径。但是,您可以传递
null
而不是空函数
obs$.subscribe(null, null, () => this.isRunning = false);
如果你想要某种把戏,你也可以做
obs$.last().subscribe(() => this.isRunning = false);
例如,如果您需要访问完成处理程序中最后发出的值,则这是有意义的 最短的形式是使用观察者对象
obs.subscribe({complete:()=>isRunning=false})代码>最短的形式是使用观察者对象
obs.subscribe({complete:()=>isRunning=false})代码>您可以只使用一个函数调用subscribe(),它将正常工作。函数本身不是一元函数,但它不会抱怨。@Burimi但它是下一个处理程序,不是完整的处理程序。啊,我忘了。然后,您可以在前两个参数中传递未定义的。您可以只使用一个函数调用subscribe(),它将正常工作。函数本身不是一元函数,但它不会抱怨。@Burimi但它是下一个处理程序,不是完整的处理程序。啊,我忘了。然后可以在前2个参数中传递未定义的。这比使用空参数长一个字符,因此客观上不是“最短的”。这比使用空参数长一个字符,因此客观上不是“最短的”。