我有以下功能。我从中删除了不必要的代码,使其更易于阅读。
add() {
const listingId = 'xyz';
const promise = new Promise((resolve, reject) => {
reject(Error(`error msg`));
});
return from(promise).pipe(
map(() => listingId),
catchError(error => of(error.message))
);
}
我订阅了这样的观察点:
this.service.add().subscribe(
listingId => {
console.log(`listingId:`, listingId);
},
error => {
console.log(`Error:`, error);
},
() => {
console.log(`Completed`);
}
);
问题是错误是在next()而不是error()中捕获的。 控制台输出是:
listingId: error msg
Completed
应该是:
Error: error msg
我做错了什么?
答案 0 :(得分:0)
在这一行catchError(error => of(error.message))
中,您发现catchError
错误,在该流切换为of(error.message)
后,catchError
的工作方式与switchMap
类似,您处理错误并切换另一个可观察的