假设我有3个函数,每个函数都返回一个observable。每个observable只会发出一个值 - true
或false
。只有当前一个返回true
时,我才会一个接一个地调用它们。否则,我只想返回false
并结束观察。我怎么能这样做?
承诺很容易:
return fn1().then(fn2).then(fn3).catch((v)=>{return v})
只要链中的任何函数拒绝承诺false
,就不会调用其他承诺回调,并且解析的承诺值将为false
。我正在寻找与观察者类似的东西。
答案 0 :(得分:2)
您可以使用concatMap()
按顺序执行异步任务,然后takeWhile()
根据需要完成流:
fn1()
.takeWhile(res => res)
.concatMap(() => fn2())
.takeWhile(res => res)
.concatMap(() => fn3())
.takeWhile(res => res)
.subscribe(...)