返回时多个观测已经完成 - 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)的结果。这怎么能克服?
我很高兴做到这一点还与诺言,但我不知道这将如何工作?
答
你可以这样做。
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);
}
}
});
}
然后你必须订阅的方法主要
您必须订阅上的methodB得到触发。 –
@Igor。是的,但我想用它作为服务。因此在另一个类中,我想订阅函数main(data)而不是methodB。 – JohnAndrews
看起来你想使用flatMap操作符。这里是一个如何使用它的例子:https://namitamalik.github.io/Map-vs-FlatMap/ –