角度2中的条件可观察链接

时间:2016-09-12 22:07:12

标签: javascript angular observable chaining

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

PSEUDO CODE

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

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

我使用这种方法:

PSEUDO CODE

...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(),但没有改变。

任何帮助/建议表示赞赏!

1 个答案:

答案 0 :(得分:1)

我遇到了同样的情况,我最后使用的是Observable.of(undefined)而不是Observable.empty()。 我不知道为什么,但Observable.empty()打断了链条。

非常感谢任何进一步的解释。