Angular 2 rxjs超时回调

Gle*_*ter 6 timeout rxjs angular

如果HTTP调用发生超时事件,我想向用户提供反馈.

我试过这个:

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);
Run Code Online (Sandbox Code Playgroud)

但是,只要进行HTTP调用,就会触发反馈服务.

超时启动时如何启动服务?

car*_*ant 8

假设_feedbackService.error返回a Error,您应该能够使用timeoutWithdefer运算符执行您需要的操作:

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);
Run Code Online (Sandbox Code Playgroud)