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