javascript - 如何在使用 redux-observable 刷新令牌后重试获取?
问题描述
我是 RxJS 的新手,如果它以未经授权的错误响应,我需要重新尝试将项目获取到 api。我需要调用刷新令牌端点,然后重试获取。如何使用来自 redux-observable 的史诗来做到这一点?我想它应该看起来像这段代码,但我不确定在 catchError 块中做什么。
export const getItemsEpic = (action$) =>
action$.pipe(
ofType('FETCH_ITEMS'),
switchMap(() => getItemsRequest()),
map((response) => addItemsAction(response.data)),
catchError(err => {
???
}),
);
解决方案
您可以尝试添加这样的管道
export const getItemsEpic = (action$) =>
action$.pipe(
ofType('FETCH_ITEMS'),
switchMap(() => getItemsRequest()),
map((response) => addItemsAction(response.data)),
catchError(error => {
// some logic how to refresh to token.
return ajax('refreshtoken').pipe(switchMapTo(throwError(error)));
),
retry(1), // allows only 1 failure.
);
推荐阅读
- lightbox - Lightbox2 未显示正确的总图像数
- r - yardstick::roc_cruve 的类概率列
- python - 如何从多个 csv 文件中读取数据并在 Python 中写入同一张 Excel 表
- c# - 我已经在 .cs 页面中使用虚拟值更新了测试方法,但是测试方法失败并在 Azure 管道 VStest 任务中显示错误消息
- flutter - 在 Dart / Flutter 中获取和设置类属性
- internet-explorer - 如何使用 AutoIT 处理 IE 下载通知栏
- java - Shutterbug NoClassDefFound
- rust - 如何使用单个检查匹配元组向量及其内容?
- swift - NSTextAttachment 子类不支持安全编码,因为它覆盖了 -initWithCoder: 并且不覆盖 +supportsSecureCoding
- laravel - Docker - 未运行