如何通过适当的错误处理在Redux-Toolkit中发出连续请求

时间:2020-08-15 23:52:21

标签: redux-toolkit

在我的应用程序中,安装根组件后,我会获取一本书籍清单。之后,它必须自动选择列表的第一本书并获取其章节列表。然后,自动选择第一章并显示其详细信息。初始加载后,用户可以选择当前书籍中的另一本书或章节。

假设我获取图书清单时出现网络问题或API响应不良。中止其余操作并仅显示通知消息的最佳方法是什么?我一直在使用这样的东西:

import requestChaptersList from './chapterSlice'

// ...

const requestBooksList = createAsyncThunk(`${sliceName}/requestList`, async () => {
    return await api.books()
}

export const requestBooksListAndChapter = () => async (dispatch) => {
    await dispatch(requestBooksList())
        .then(unwrapResult)
        .then((res) => {
            dispatch(selectFirstBook())
            dispatch(requestChaptersList())
        })
        .catch((error) => {
            dispatch(notifyError(error))
        })
}
// ...

问题是:

  1. unwrapResult创建原始错误的序列化版本。但是我的notifyError(理想情况下)应该得到一个Error对象或一个子类。

  2. 在没有unwrapResult的情况下,运行requestBooksList的拒绝减少程序,但是.then ppart正常继续。

  3. 当请求数量增加时,它似乎无法很好地扩展。例如,如果我想要一本书>章节>页面顺序。

0 个答案:

没有答案