Angular 2 Http timeout

徘徊边缘 提交于 2019-12-07 08:04:18

问题


I have a problem posting a custom error message on HTTP timeout.

Here is the simple example:

return this._http.get(url).timeout(5000, new Error("Error message"));

I saw that everybody uses new Error("Error message") but I'm getting the error:

Error function expects type Scheduler. I'm getting this error: Argument of type 'Error' is not assignable to parameter of type 'Scheduler'. Property 'SchedulerAction' is missing in type 'Error'


回答1:


In rxjs 4, it was possible to customise the error message that way. However, in latest versions of rxjs 5, timeout only accepts two arguments:

  • due: number | Date
  • scheduler: IScheduler (this is to manage how the Observable processes the timeout)

If you want to customise your error, you may try something like:

return this._http.get(url)
 .timeout(5000)
 .catch(err => {

   if (err.name !== "TimeoutError") {
      return Observable.throw("Timeout has occurred");
   }

   return Observable.throw(err);

});



回答2:


You should be able to do that with timeoutWith:

return this._http.get(url).timeoutWith(5000, Observable.throw(new Error("Error message")));



回答3:


As of version rc.5, timeout no longer accepts the errorToSend argument.

https://github.com/ReactiveX/rxjs/blob/master/CHANGELOG.md#500-rc5-2016-12-07



来源:https://stackoverflow.com/questions/41465687/angular-2-http-timeout

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!