【问题标题】:RXJS chain observables completing at any pointRXJS 链 observables 在任何时候完成
【发布时间】:2017-11-13 18:00:22
【问题描述】:

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

【问题讨论】:

  • 您能澄清一下您的意思吗?在这种情况下,“进度”、“链”可能会被混淆。是否有机会提供您想获得的示例输入/输出?
  • 我已经在stackoverflow.com/a/42659054/2398593 回复了链式请求,您只需添加一个if 即可实现您想要的效果

标签: javascript rxjs


【解决方案1】:

您可以设置一个可观察的来控制流程并在完成后完成它。还可以使用 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))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-30
    • 2017-05-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-07
    • 2020-08-07
    相关资源
    最近更新 更多