2017-10-03 5 views
-1

と呼んhttp.getに404エラーを取得し、私はそれがステータス200(すべてがOKである)を返すために持っている仕事、このコードを持って2角度:私は少し問題を抱えている観察可能なリターン

​​

しかし、 URLが間違っていて404エラーが発生した場合、私のサイトはコンソールエラーでクラッシュします。

コンソールでエラーが発生しない限り、このタイプのエラーを正しくキャッチできますが、エラーが発生すると再試行できますか?

修正するためのアイデア誰かのよう

(私は^^観察可能と非常に簡単ではないよ)私は(3).retryを試してみたが、このコードは動作しないと.subscribeが観測リターンでは動作しません。この ?

+0

urlが間違っていて、あなたが.retry(3)を実行した場合は、さらに3回失敗します。あなたの 'this.handleError'は何をしますか? – FussinHussin

+0

あなたの' this.handleError'は何をしますか? – amal

+0

方法の1つはデフォルトアクションを作成することです。しかし、おそらく別のバックエンドを使用しています。 –

答えて

0

サービスに、結果を返すかエラーをスローするオブザーバブルを返すようにしてください。

httpCallGet(pathToCall: string, varToSend: string): Observable<any> { 
    return this.http.get(this.url + pathToCall + varToSend, {headers : this.headers}) 
    .map(res => res.json()) 
    .catch(error => Observable.throw('error'); 
}; 

次に、コンポーネントでエラーを処理します。

getHttpData =() => { 
    this.service.httpCallGet('someurl', '') 
    .subscribe(
     result => this.handleResult(result), 
     error => this.handleError(error) 
    ) 
}; 

handleResult = (data) => { 
    // do stuff with data 
}; 

handleError = (error) => { 
    // do stuff with error 
}; 
+0

ありがとう、それは良い作品です。私は.get呼び出しで直接エラーを管理できると思ったが、私はサブスクライブで(実際の '呼び出し'の開始と終了)、それを行うことができますか? –

+0

subscribeメソッドを提供するには、observableが必要です。私はあなたが 'service.handleError'から返されていないと思っています。それがあなたを助けたら答えを受け入れることができますか? –

関連する問題