2016-08-17 18 views
4

HTTPコールのタイムアウトイベントが発生した場合、ユーザーにフィードバックを提供したいと考えています。角2 rxjsタイムアウトコールバック

return this._http 
       .post(apiUrl + 'Search/Everything', params, {withCredentials: true, headers: this.headers}) 
       .timeout(5000, this._feedbackService.error("Custom error message")) 
       .map((response: Response) => response.json().data); 

しかし、それは、すぐにHTTP呼び出しが行われるようなフィードバックサービスを起動:

は、私はこれを試してみました。

タイムアウトが発生したときにサービスを開始するにはどうすればよいですか? _feedbackService.errorErrorを返すと仮定

答えて

5

、あなたはtimeoutWithと​​事業者と必要なものを行うことができる必要があります:

import "rxjs/add/observable‌​/defer"; 
import "rxjs/add/observable‌​/throw"; 
import "rxjs/add/operator/timeoutWith"; 
import { Observable } from "rxjs/Observable‌​"; 

return this._http 
    .post(apiUrl + 'Search/Everything', params, {withCredentials: true, headers: this.headers}) 
    .timeoutWith(5000, Observable.defer(() => Observable.throw(this._feedbackService.error("Custom error message")))) 
    .map((response: Response) => response.json().data); 
+0

申し訳ありません。私はこれに答え、私は質問を誤解していることに気付きました。私は答えを更新しました。 – cartant

+0

これを行うには、 'rxjs/add/operator/timeoutWith'以外に何をインポートする必要がありますか? ( "Rx"の部分です)。 –

+0

rxjs/add/observable/defer "と" import "rxjs/add/observable/throw"も必要です。 – cartant