当多个可观察对象完成时返回 - 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
我正在尝试将两个需要紧接着执行的操作链接起来,如下所示:
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