2017-05-30 10 views
0

私のIonic2アプリケーションでは、すべてのhttp要求を処理するサービスがあります。 httpコールでエラーが発生した場合、私は警告コントローラを持っています。このアラートのボタンをクリックすると、そのコールを再度実行します。私は今それを行うことができます。問題は、関数が呼び出されたページからの応答が解決されないということです。サービスでhttpコールでの処理のエラー2

コード:ハンドラ

showCity(){ 
this.cityService.loadCity() 
.then(data => {//process data}); 
} 

CityPage

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()関数に解決されません。

答えて

5

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

にあなたはdocsでより良い例を見ることができます。

+0

ありがとうございました。私の悪い、私は新しいです&私は基礎を知らずにコード化しました。 –

関連する問題