【发布时间】:2018-03-19 22:20:48
【问题描述】:
我有一个与 rest api 交互的 redux 中间件。我最近开始使用 async/await 重写一些 fetch 函数。
为了对我来说最有意义,我需要中间件函数本身是一个异步函数,这样我就可以在我创建的其他异步函数上使用“等待”和 try/catch 块,而不是拥有使用 .then、.catch。
到目前为止,我有这个:
const apiMiddleware = ({
dispatch,
getState
}) => next => async action => {
switch (action.type) {
//...
}
next(action);
};
请注意在“动作”之前使用 async 关键字。到目前为止,这似乎按预期工作,我可以等待该中间件的其他异步功能。但是,由于我无法找到这方面的文档,我想知道我所做的是否真的有效。
谢谢
【问题讨论】:
-
在内部,你并没有真正做任何不同的事情,谢谢在解决后打电话给 next,所以我不明白为什么它不起作用
-
我们有多个这样的异步中间件函数,最近开始遇到意外的行为。我们看到 redux 选择器被旧状态触发,大概是因为异步中间件函数影响了操作的处理顺序。
标签: javascript ecmascript-6 redux async-await redux-middleware