我有一个正在听动作的传奇。当这个动作被调度时,它会执行一个阻塞调用。问题是同时调度了很多动作(相同的动作),而我的传奇不能采取所有的动作。但我需要同步处理每个动作。我知道这是 redux-saga 文档中的一个已知问题:My Saga is missing dispatched actions但事实是我不能使用分叉,因为我真的需要在处理新的调用之前结束之前的调用。这是我的代码:export function* readProducts() { while (true) { const { payload: { tags }, } = yield take(RFID__ADD_PRODUCT); // sequential add of each item for (const tag of tags) { yield call(addProductViaRfid, tag); } }}有没有人有办法解决吗 ?
1 回答
www说
TA贡献1775条经验 获得超8个赞
您可以创建缓冲操作通道并从中执行操作。
export function* readProducts() {
const addProductRequests = yield actionChannel(RFID__ADD_PRODUCT);
while (true) {
const {
payload: { tags },
} = yield take(addProductRequests);
// sequential add of each item
for (const tag of tags) {
yield call(addProductViaRfid, tag);
}
}
}
添加回答
举报
0/150
提交
取消
