为了账号安全,请及时绑定邮箱和手机立即绑定

如何采取通过阻塞呼叫调度的多个操作

如何采取通过阻塞呼叫调度的多个操作

呼唤远方 2022-01-07 10:23:28
我有一个正在听动作的传奇。当这个动作被调度时,它会执行一个阻塞调用。问题是同时调度了很多动作(相同的动作),而我的传奇不能采取所有的动作。但我需要同步处理每个动作。我知道这是 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);

        }

    }

}


查看完整回答
反对 回复 2022-01-07
  • 1 回答
  • 0 关注
  • 166 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号