我根据redux-observable 网站上的“获取用户演示”创建了一个史诗。
我只是想知道如何向 ajax 请求添加错误处理。我的尝试:
const fetchCategoriesEpic = action$ =>
action$.ofType(FETCH_CATEGORIES)
.mergeMap(() =>
ajax.getJSON(`http://localhost:4000/categories`)
.map(
response => fetchCategoriesFulfilled(response),
error => console.log(error)
)
)
我正在测试,而我正在调用的 API 正在测试错误处理。仍然在控制台中得到这个并且应用程序崩溃:
ExceptionsManager.js:71 未处理的 JS 异常:ajax 错误 0
如果这是官方文档,那么我是否可以摆脱地图并改为订阅?
我把它改成这样:
import 'rxjs/add/operator/catch'
const fetchCategoriesEpic = action$ =>
action$.ofType(FETCH_CATEGORIES)
.mergeMap(() =>
ajax.getJSON(`http://localhost:4000/categories`)
.map(
response => fetchCategoriesFulfilled(response)
).catch( err => console.log(err))
)
但得到:
您在预期流的位置提供了 undefined 。你可以提供一个 oberable、promise、array 或 iterable
更改为(根据杰伊菲尔普斯在这里的回答):
const fetchCategoriesEpic = action$ =>
action$.ofType(FETCH_CATEGORIES)
.mergeMap(() =>
ajax.getJSON(`http://localhost:4000/categories`)
.map(response => fetchCategoriesFulfilled(response))
.catch( err => Observable.of(err.xhr.response))
)
得到:
动作必须是普通对象。使用自定义中间件进行异步操作
我究竟做错了什么?