如何执行通过阻止呼叫调度的多个操作

Mél*_*a A 5 javascript ecmascript-6 redux redux-saga

我在听一个动作的传奇。当分派此操作时,它将执行阻塞调用。

问题是很多动作(相同的动作)是在同一时间分派的,而我的传奇无法采取所有动作。但是我需要同步处理每个动作。

我知道这是redux-saga文档中的一个已知问题:我的Saga缺少调度的操作

但事实是,我不能使用fork,因为在处理新的调用之前,我确实需要结束上一个调用。

这是我的代码:

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);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

有没有人有办法解决吗 ?

Yur*_*nko 3

您可以创建缓冲操作通道并从中执行操作。

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);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)