Angular2返回嵌套Observable的内部Observable

时间:2017-02-14 23:09:10

标签: angular observable

我想使用observable在Angular2中进行多次http调用。每个可观察量取决于先前的可观察量。如果我想返回内部可观察对象,那么我可以在父组件中订阅它,如何做到这一点?

以下是我尝试过的内容,但我无法订阅父组件中的observable。

子组件:

observablesFn(){
   observable1().subscribe(data1 => {
        observable2().subcribe(data2 => {
            //I want to return this observable (before subscription b/c I want to subscribe in the parent component)
            return observable3();
        })
   }
}

1 个答案:

答案 0 :(得分:8)

您的问题很难理解,因为您没有给出太多背景信息,但听起来您希望observable3()的结果从observablesFn()返回。现有的return语句从嵌套的内部匿名函数返回,而不是最外层的范围。我认为您希望在这些方面做更多的事情。

observablesFn(){
  return observable1().map(data1 => {
    return observable2(data1).map(data2 => {
      return observable3(data1, data2);
    });
  });
}

这将从observablesFn()返回,而不是其嵌套的内部函数。

使用.map而不是.subscribe是必要的,因为它返回了一个可观察的,而不是订阅。