我有一个简单的中间件来处理作为promise对象的API响应数据。
现在,我希望在解析promise并将已解析的数据格式化为某种格式后,将两个单独的操作对象传递给reducer。
但是,我不确定如何从我的中间件传递两个单独的操作对象,因为'返回'只能使用一次。
处理这种情况的适当方法是什么?
const asyncMiddleware = store => next => action => {
// some codes here
action.promise.then(response => {
if (action.type === 'YYY') {
//some codes here to format API response data.
const newAction1 = { type: 'type1', payload: 'original data' };
const newAction2 = { type: 'type2', payload: 'formatted data' };
// does this work properly?
// I dont want to do this. [newAction1, newAction2] as I lose consistency.
next(newAction1);
return next(newAction2);
}
return next(action);
});
};
答案 0 :(得分:0)
感谢评论中提供答案的人。我只是整理了它并在这里提供了一个完整的片段。通常 返回 最终操作, 手动调度 任何其他操作。
const asyncMiddleware = store => next => action => {
action.promise.then(response => {
if (action.type === 'YYY') {
const newAction1 = { type: 'type1', payload: 'original data' };
const newAction2 = { type: 'type2', payload: 'formatted data' };
store.dispatch(newAction1);
return newAction2;
}
return next(action);
});
};