首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何让``redux saga`‘使用最新调度事件的结果?

如何让``redux saga`‘使用最新调度事件的结果?
EN

Stack Overflow用户
提问于 2019-02-19 13:06:05
回答 1查看 117关注 0票数 0

我有一个输入字段,每次value更改时,我都会调度一个事件来使用该值获取后端API。但API的响应时间各不相同:后获取的API可能会在前一个获取的API之前返回响应,这使得最后一个响应与最新的值不对应。

我正在使用redux-saga中间件,我想知道redux-saga是否提供了一种管理响应的方法,以便我可以使用与最新调度的事件相对应的响应?

我需要立即调度操作,并按顺序处理响应。

EN

回答 1

Stack Overflow用户

发布于 2019-04-06 04:58:17

您正在寻找的解决方案是redux-saga channels effect和buffers

TL:DR

代码语言:javascript
复制
import { buffers } from 'redux-saga'
import { take, actionChannel, call, ... } from 'redux-saga/effects'

function* watchActions() {
    // 1- Create a channel for queueing actions
    const actionsChannel = yield actionChannel('REQUEST', buffers. expanding(5))

    while (true) {
        // 2- Blocks the Saga until a message is available on the channel
        const {payload} = yield take(actionsChannel)
        // 3- Note that we're using a blocking call
        yield call(handleRequest, payload)
    }
}

function* handleRequest(payload) { ... }

说明:上面的代码使用redux-saga通道效果,如果saga还没有准备好接受它们(例如,在API调用上被阻塞),那么就按照它们被调度的顺序(使用缓冲区)对它们进行排队。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54759188

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档