我怎么能重试后捕获
How can i retry after catch?
如何在catch后重试?
我想在catch方法后自动重试我的observable,而不调用另一个订阅。我该怎么做呢?
我现在有这样的东西:
intercept(observable: Observable<Response>): Observable<Response> {
return observable.catch((err, source) => {
return this.refreshToken()
.flatMap(res => {
if (res.status === 200) {
return observable;
}
return Observable.throw(new Error('Can''t refresh the token'));
});
});
}
因此,当我有我的可观察对象并调用subscribe
时,它将捕获错误->
刷新令牌->
,然后返回可观察对象,我必须调用另一个订阅。我不想那样做。我怎样才能使它与之前的订阅一起工作呢?
调用示例看起来像这样:
let request = this.http.request(url);
intercept(request).subscribe(res => { //do something });
有几个操作符可以与catch结合使用来处理重审/重复操作。它们是有用的操作符,它们允许你有条件地重新订阅已经终止的可观察对象。retryWhen
的官方文档:
在通知器出错时重复源可观察序列发出下一个值。如果源可观察到错误和通知器完成后,它将完成源序列。
附加信息:
- retryWhen,
- repeatWhen
你可以从前面的问题中找到一些例子:
- 在http请求中使用' retryWhen '
- 如何在RxJs中只重试由源可观察对象发出的某些错误
- 如何建立一个rx轮询器等待一些间隔后,以前的ajax承诺解决?
选自第二个SO问题:
src.retryWhen(function (errors) {
// retry for some errors, end the stream with an error for others
return errors.do(function (e) {
if (!canRetry(e)) {
throw e;
}
});
});
相关文章:
- JavaScript:在源404上重试
- 我怎么能让jQuery对话框表现得像Javascript警报
- 我怎么能让流星简单模式中的一个字段等于一个js变量,并且仍然让用户填写简单模式的其余部分
- 我怎么能把一个类嵌套在另一个类中呢
- 我怎么能把这个代码放在移动设备上运行
- 我怎么能把一个错误当作未捕获的错误来记录呢
- DIV怎么能像Javascript中的另一个元素一样工作呢
- 我怎么能用css或(angular)javascript把句子分成两行,只在特定单词后面
- 我怎么能把它做成这样一个图像就不能拖动了
- 我怎么能同时去锚定并打开Bootstrap手风琴呢
- 用分隔符分隔具有多个整数值的字符串的Javascript"重试错误的值
- Github上的流星,我怎么能和朋友一起做同一个项目
- Ajax在NodeJS中为一个耗时的请求请求多次重试
- 如果没有document.ready(),我怎么能拥有多个javascript函数呢
- 有没有一个javascript库可以生成这样的垂直切片背景图像?如果没有,我怎么能创建它
- 如何仅在RxJs中可观察到的源发出的特定错误上重试
- 我怎么能"重置”;一个数组's键
- 我怎么能重定向到第一个选项卡在模态弹出后,我关闭模态弹出
- 我怎么能重试后捕获
- 我怎么能重定向到使用angular js的页面,而我使用javascript窗口