在我的 Ionic2 应用程序中,我有一个处理所有 http 请求的服务。 当 http 调用中发生任何错误时,我有一个警报 Controller 。在此警报中单击按钮,我想再次运行该调用。我现在可以做到。问题是响应未解析到调用函数的页面。
服务中的代码:
loadCity(){
return new Promise(resolve => {
this.http.get(url).map(res=>res.json())
.subscribe(data => {resolve(data)},
err => { this.showAlert(err); }
});
}
showAlert(err: any){
// code for alert controller, I am only writing handler of alert
//controller refresh button
handler => {this.loadCity();}
}
CityPage 中的代码
showCity(){
this.cityService.loadCity()
.then(data => {//process data});
}
Handler 再次调用函数,但这次 promise 没有解析到 CityPage showCity() 函数。
最佳答案
当http请求发生错误时,正在调用错误回调函数,但你既没有解决也没有拒绝promise。
你可以做类似的事情
loadCity(){
return new Promise( (resolve, reject) => {
this.http.get(url).map(res=>res.json())
.subscribe(
data => {resolve(data)},
err => {
this.showAlert(err);
reject(err);
}
});
}
}
在调用者中
showCity(){
this.cityService.loadCity()
.then( data => {
//process data
})
.catch( error => {
//some error here
})
}
您可以在 docs 中看到更好的示例.
关于http - 处理 ionic 2 中的 http 调用错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44259674/