RXJS连锁店可观察到任何一点

时间:2017-06-12 09:49:37

标签: javascript rxjs

有没有办法链接几个可观察量但允许链随时完成?我有三个Observable,它们都返回布尔值。但是,如果当前的observable为false,我只想进入链中的下一个observable。观察者必须在完成最后一个并且完成值为假的情况下进展。这可能吗?

1 个答案:

答案 0 :(得分:1)

您可以设置一个可以控制流量的observable,并在完成后完成。还可以使用zip运算符 - 如果其中一个可观察对象(在我们的例子中是控制对象)完成,它将完成整个流程。

 let control$ = new Rx.Subject();

 let data$ = Rx.Observable.interval()
  .map(x => x<10?true:false)
  .do(flag => {
    if(flag) control$.next(true);
    else control$.complete();
 });

 Rx.Observable.zip(data$.filter(x=>x), control$.startWith(true), (x,y)=>x)
  .subscribe(x=>console.log(x))