[英]Ionic Angular : Create generic http error handler
我是angular2的新手,我這樣做我的http請求:
this.http.get(...).map(res=>res.json()).subscribe(data=>{
//..do something
},err=>{
if(err.status == 400){
this.presentToast('Validation error');
}else if(err.status == 403){
this.presentToast('Authorization error'):
}else if(err.status == 500){
this.presentToast('Something wrong with server');
}else ...
});
我想為用戶可以理解的每個常見狀態代碼提供自定義消息,但問題是我將這些if和else塊寫入我所做的每一個http請求,並且在我擁有的每個ts文件中,所以基本上我導入了ToastController在每個ts文件中寫入presentToast函數。
反正有沒有制作一個通用的錯誤處理程序,它以一種方式修飾它將自定義規則/消息作為Toast呈現並使其變干?
你可以通過這樣創建一個常見的Observable來實現:
你的common.ts
將有這個方法:(比如,這個組件是CommonProvider
就像在CommonProvider
類中編寫的那樣)。
httpGetCall(url){
return Observable.create(observer => {
this.http.get(url)
.map(res => res.json())
.subscribe(data => {
console.log("Your data : " , data);
observer.next(data);
},(err) => {
console.log("Your error : ", err);
observer.error(err);
if(err.status == 400){
this.presentToast('Validation error');
}else if(err.status == 403){
this.presentToast('Authorization error'):
}else if(err.status == 500){
this.presentToast('Something wrong with server');
}else ...
});
});
}
從您的調用方法,您可以這樣做:
@Component({
templateUrl: "<your-html-path/code>",
providers: [CommonProvider]
})
export class YourPage{
constructor(private common: CommonProvider){
this.common.httpGetCall(<url>)
.subscribe(data => {
//..do something
},(err) => {
//.. Any other operation or nothing to do as toast action is already done.
})
}
}
但是,這只是為了以防萬一你需要一個通用的處理程序。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.