在离子2中的HTTP调用中处理错误



在我的ionic2应用中,我有一个处理所有HTTP请求的服务。当HTTP调用中发生任何错误时,我有一个警报控制器。在此警报中单击按钮,我想再次运行该通话。我现在可以做到。问题是响应无法解决到函数的页面。

服务中的代码:

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});
}

处理程序再次呼叫功能,但是这次承诺无法解决到citypage showcity((函数。

当http请求中发生错误时,正在调用错误回调函数,但是您既不解决也不拒绝承诺。

您可以做

之类的事情
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
    })
}

您可以在文档中看到更好的示例。

相关内容

  • 没有找到相关文章

最新更新