仅当先前的observable返回特定值时,如何执行回调

时间:2017-07-08 08:01:08

标签: javascript rxjs

假设我有3个函数,每个函数都返回一个observable。每个observable只会发出一个值 - truefalse。只有当前一个返回true时,我才会一个接一个地调用它们。否则,我只想返回false并结束观察。我怎么能这样做?

承诺很容易:

return fn1().then(fn2).then(fn3).catch((v)=>{return v})

只要链中的任何函数拒绝承诺false,就不会调用其他承诺回调,并且解析的承诺值将为false。我正在寻找与观察者类似的东西。

1 个答案:

答案 0 :(得分:2)

您可以使用concatMap()按顺序执行异步任务,然后takeWhile()根据需要完成流:

fn1()
  .takeWhile(res => res)
  .concatMap(() => fn2())
  .takeWhile(res => res)
  .concatMap(() => fn3())
  .takeWhile(res => res)
  .subscribe(...)