多个可观察量完成后返回 - Angular2

时间:2017-02-24 13:56:41

标签: angular observable angular2-observables

我正在尝试将两个需要紧接着执行的操作链接起来,如下所示:

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

}

问题是第二种方法没有被触发。它只返回observable(resB)的observable和 not 结果。怎么能克服这个?

我很高兴也能兑现承诺,但我不确定这会怎么样?

1 个答案:

答案 0 :(得分:1)

你可以这样做。

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