下面的代码有什么问题:
private async getData$(){
const value = await anObservable$.pipe(
switchMap(res => fetchData$(res)) // it works
).toPromise();
console.log(value); // doesn't get here
}fetchData$可以工作,但是线程不能到达console.log。控制台中没有错误。
发布于 2021-04-29 05:03:09
由此产生的promise只有在anObservable$完成后才会解析。如果它永远运行,承诺永远不会解决。如果你只对anObservable$的一个发射感兴趣,你可以这样做:
private async getData$(){
const value = await anObservable$.pipe(
switchMap(res => fetchData$(res)),
take(1)
).toPromise();
console.log(value);
}您可能无论如何都想要这样的东西,因为一旦可观察对象完成,promise将随着其可观察对象的最后一次发射而解析。在此之前的任何排放都会被丢弃。
https://stackoverflow.com/questions/67307811
复制相似问题