【发布时间】:2018-07-05 06:20:07
【问题描述】:
对于下面的函数,我怎样才能从“BROKEN”中抛出一个错误,就像它的订阅者可以像“WORKS”代码行一样很好地处理它?
我看到的是,'Works' 行巧妙地传递了这个函数的订阅者的错误,而 BROKEN 行只是在没有得到订阅者处理的情况下爆炸了。我在 Ionic 项目中使用 Angular(版本 5.0.3)、RXJS 版本 5.5.2 和 @angular/common/http 中的 HttpClient。
public makeRequest(requestParameters) {
return Observable.create(observer => {
let url = 'http://example.com/service/action?a=b';
this.http.get(url,{withCredentials: true})
.subscribe(data => {
if(data["success"] !== true)
observer.error("Unexpected result");//BROKEN
else
observer.next(data["payload"]);
},
err => {
console.log('error: ' + err);
observer.error(err);//WORKS
});
});
}
这是一个调用上述函数的示例:
public getStuffFromServer(){
this.makeRequest({parameters go here}).subscribe(
data => {
//do something with the results
},
err => {
//This never gets called from the 'BROKEN' code (but it does from the WORKS code
}
);
}
感谢您的帮助!
【问题讨论】:
-
您可以尝试这样做:这是一个类似的案例stackoverflow.com/a/55286461/8342681
标签: angular ionic-framework error-handling rxjs observable