Javascript 有没有一种更短的方法来提供一个可观察的onComplete处理程序?

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( () => {}, (

我正在处理一个可观察的链,我对下一个或错误值不感兴趣,只有当链完全完成时。点击subscribe方法,为next和error提供2个noop,这样我就可以提供一个
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个参数中传递未定义的。这比使用空参数长一个字符,因此客观上不是“最短的”。这比使用空参数长一个字符,因此客观上不是“最短的”。