我在HTTP超时时发布自定义错误消息时遇到问题。
以下是一个简单的例子:
return this._http.get(url).timeout(5000, new Error("Error message"));
我看到每个人都使用新错误(“错误消息”),但我收到错误:
错误函数需要类型Scheduler。我收到这个错误: “错误”类型的参数不能分配给类型的参数 “调度”。 “错误”
类型中缺少属性“SchedulerAction”
答案 0 :(得分:9)
在rxjs 4中,可以通过这种方式自定义错误消息。但是,在最新版本的rxjs 5中,timeout
只接受两个参数:
如果您想自定义错误,可以尝试以下方法:
return this._http.get(url)
.timeout(5000)
.catch(err => {
if (err.name !== "TimeoutError") {
return Observable.throw("Timeout has occurred");
}
return Observable.throw(err);
});
答案 1 :(得分:2)
您应该可以使用timeoutWith
:
return this._http.get(url).timeoutWith(5000, Observable.throw(new Error("Error message")));
答案 2 :(得分:0)
从版本rc.5开始,超时不再接受errorToSend参数。
https://github.com/ReactiveX/rxjs/blob/master/CHANGELOG.md#500-rc5-2016-12-07
答案 3 :(得分:0)
你可以使用 (rxjs 6.6.3)
import { timeoutWith } from 'rxjs/operators'
import { throwError } from 'rxjs'
// ...
return this.http.get(url).pipe(timeoutWith(5000, throwError(new Error("Error message"))))
// ...