angular 2中的条件可观察对象链

Conditional Observable chaining in angular 2

本文关键字:观察 对象 条件 angular      更新时间:2023-09-26

我在Angular 2中工作,我正在从一个服务中进行一系列异步调用。在我的呼叫链中,有些呼叫只需要有条件地进行。我的初始调用链如下所示:

伪代码

this.post().flatMap( () => this.put() ).flatMap( () => this.get() )..etc.

然后我需要根据变量数组有条件地附加额外的异步调用到我的链。

我正在使用这种方法:

伪代码

...flatMap( () => return this.additionalCallsFunction(callArray) )
.flatMap( () => this.finalPostRequest() ).subscribe(...)
additionalCallsFunction(callArray){
  if(callArray.length === 0) return Observable.empty()
  else { return this.get().concatMap( (res) => this.put(res).flatMap( () => { 
    callArray.removefirstItem()
    return this.additionalCallsFunction(callArray)
  }); 
}

我是Angular和Observables的新手,所以我不确定我是否正确地处理了这个问题。无论我的附加调用数组是否为空,我都看到我的初始调用发生了,但是当我的函数返回时,附加调用和我的最终Post请求都没有通过。我也没有在控制台中看到任何错误。我试过用。never()代替。empty(),但没有变化。

感谢任何帮助/建议!

我也有同样的情况,我最终使用Observable.of(undefined)而不是Observable.empty()。我不知道为什么,但是Observable.empty()打断了这个链。