2017-06-12 60 views
0

有没有什么办法链接几个观察对象,但是可以随时完成链条?我有三个Observable,他们都返回布尔值。但是,如果当前可观察值为假,我只想进入链中的下一个可观察值。观测数据必须在最后一个完成时完成,并且完成的数值为假。这可能吗?RXJS链条可观察量在任何时间点完成

+1

请您澄清一下您的意思吗? “进展”,“链条”在这方面可能会混淆。有没有机会提供你想要的样本输入/输出? – superjos

+1

我在https://stackoverflow.com/a/42659054/2398593做了一个响应来链接请求,你只需要添加一个'if'来实现你想要的东西 – Maxime

回答

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))