fromPromise中的RXJS抛出错误未命中';捕捉错误';管道法
有人能解释为什么这个promise(runQuery)在“catch”中失败并抛出一个ErrorObservable,但在“catchError”方法中没有被捕获,而是在“map”方法中被捕获。fromPromise中的RXJS抛出错误未命中';捕捉错误';管道法,rxjs,observable,Rxjs,Observable,有人能解释为什么这个promise(runQuery)在“catch”中失败并抛出一个ErrorObservable,但在“catchError”方法中没有被捕获,而是在“map”方法中被捕获。 (我尝试了两种方法,相同的结果) 从'rxjs/observable/throw'导入{u throw}; 从“rxjs/observable/ErrorObservable”导入{ErrorObservable}; const runQuery=(拒绝的承诺) const source$=fromPr
(我尝试了两种方法,相同的结果)
从'rxjs/observable/throw'导入{u throw};
从“rxjs/observable/ErrorObservable”导入{ErrorObservable};
const runQuery=(拒绝的承诺)
const source$=fromPromise(
运行查询({d:'g'})
.catch(错误=>{
返回新的ErrorObservable(err);
//return _-throw(err);--同上
})
)
.烟斗(
map((响应:任意)=>{
//在此处输入response.error
}),
捕捉错误(e=>{
//不进
})
);
您正在处理承诺中自己的错误,并让它返回一个可观察的错误。通过这样做,您使承诺成功(尽管有返回值之类的错误)fromPromise
会将其转换为发射,而不是错误
删除fromPromise中的catch case,它应该命中可观察的。catchError
没有必要处理承诺(当它仍然是一个承诺时),因此这远不是推荐的
.then(data => {
return data;
})
.catch(err => {
return new ErrorObservable(err);
//return _throw(err); -- same as above
}))
让观察者控制拒绝
const source$ = fromPromise(runQuery())
.pipe(
map((response: any) => {
//Make here some transformations
return response;
}),
catchError(e => {
return _throw(e);
}
));
如果要在observable接收到错误之前更改错误对象或在promise中的catch中执行console.log(),可以抛出错误:
.then(data => {
return data;
})
.catch(err => {
console.error("Error", err );
err.code = 110; // you may want to change something before passing to observable
throw err;
}))
如果使用return error,则observable的错误或捕获管道将不起作用,但使用throw它会起作用。map
没有任何错误处理程序。它仅适用于next
通知。看起来你的括号错了。马丁,谢谢你,你是对的,修正了括号,按照马克下面说的做了,解决了这个问题。非常感谢,谢谢!成功了。就像马丁上面说的,我也有一个帕伦斯,这是什么搞砸了管道法。谢谢你们俩!!