我正在建立我的异步中间件,我想从中发送几个动作。以下是目前的情况:
const [ requestType, successType, failureType ] = types;
next({type: requestType});
return call().then(
result => {
return next({
result,
type: successType
})
},
error => {
// I want to dispath the `sendNotification()` action here
// to add item to notifications center
// should I use `next` or `store.dispath`?
//this way?
store.dispath(failedNotification);
//or this way?
next(failedNotification);
return next({
type: failureType,
error: error.message || 'Something bad happened',
errorType: error.errorType
})
}
)
我的问题出现在上面代码中的这些评论中:
// I want to dispath the `sendNotification()` action here // to add item to notifications center // should I use `next` or `store.dispath`?
我之所以提出这个问题,是因为根据我对applyMiddleware
next()
的实施细节的理解,store.dispatch
将通过剩余的中间件链传递一个动作,而{ {1}}将遍历整个中间件链,包括当前的中间件。
答案 0 :(得分:2)
如果您使用store.dispatch()
,则调度将再次触发您的中间件并再次呼叫call()
。有时它可能会导致无限循环,因此调用next()
看起来是更好的选择。