当多个可观察对象完成时返回 - Angular2

Returning when multiple observables have finished - 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;
      }
    })

}

问题是第二种方法没有被触发。它只是 returns 对我来说是可观察的, 不是 可观察的结果 (resB)。如何克服?

我也很乐意通过承诺来做到这一点,但我不确定这将如何运作?

你可以做到。

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);
            }
        }
    });

}

然后你必须订阅方法 main