返回时多个观测已经完成 - Angular2

返回时多个观测已经完成 - Angular2

问题描述:

我想链需要按照如下方式后,对方正确执行两个动作:返回时多个观测已经完成 - Angular2

public main(data) { 

    // A. 
    return this.methodA(data) 
    .map(resA => { 
     if (resA.hasOwnProperty('id')) { 

     console.log('gets triggered'); 

     // B. 
     return this.methodB(resA).map(resB => { 

      console.log('does not get triggered', resB) 
      return resB.json(); 
     }) 

     } else { 
     return resA; 
     } 
    }) 

} 

问题是,第二种方法不被触发。它只返回给我的可观察值和而不是可观察值(resB)的结果。这怎么能克服?

我很高兴做到这一点还与诺言,但我不知道这将如何工作?

+1

您必须订阅上的methodB得到触发。 –

+0

@Igor。是的,但我想用它作为服务。因此在另一个类中,我想订阅函数main(data)而不是methodB。 – JohnAndrews

+1

看起来你想使用flatMap操作符。这里是一个如何使用它的例子:https://namitamalik.github.io/Map-vs-FlatMap/ –

你可以这样做。

public main(data) { 

    return Observable.create(observer => { 
     this.methodA(data).subscribe(resA => { 
      if (resA.hasOwnProperty('id')) { 
       this.methodB(resA).subscribe(resB =>{ 
        observer.next(resB); 
       }) 
      } else { 
       observer.next(resA); 
      } 
     } 
    }); 

} 

然后你必须订阅的方法主要