首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

我可以在redux-sagas中使用'take‘来等待进度吗?当这样使用时,Saga流会跳回到saga中较早的点

在redux-sagas中,我们可以使用'take'来等待进度。当使用'take'时,Saga流会暂停并等待指定的action被触发。一旦该action被触发,Saga流会继续执行。

'take'是redux-saga提供的一个effect,用于监听指定的action。当我们在Saga中使用'take'时,可以指定一个action类型或一个action类型数组。Saga会暂停并等待这些指定的action被触发。

使用'take'的优势在于可以实现异步的流程控制。通过等待特定的action,我们可以在Saga中根据不同的action类型执行不同的逻辑。这样可以更好地管理应用程序的状态和流程。

在使用'take'时,需要注意以下几点:

  1. 'take'只会监听一次指定的action。一旦该action被触发,Saga流会继续执行,并且不会再次监听同一个action。
  2. 如果需要监听多次同一个action,可以使用'takeEvery'或'takeLatest'等其他effect。
  3. 在使用'take'时,Saga流会跳回到saga中较早的点。这意味着,在等待指定的action时,Saga流会暂停并等待,直到该action被触发后才会继续执行。

对于这个问题,如果你想在redux-sagas中使用'take'来等待进度,可以按照以下步骤进行操作:

  1. 在Saga中使用'take'来监听指定的action,例如:import { take } from 'redux-saga/effects'; function* mySaga() { yield take('PROGRESS_ACTION'); // 进度被触发后的逻辑 }
  2. 当指定的action被触发时,Saga流会继续执行后续的逻辑。

推荐的腾讯云相关产品和产品介绍链接地址:

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

redux-saga入门

sagayield 后面的内容我们称呼它为Effect(redux-saga任务单元),Effects我们可以进行启动其它saga,也可以处理一些副作用操作。...function* watchLogin() { yield takeLatest('login', login) // 1,使用take等待类型loginOutaction到来,take将阻塞当前...即继续登出操作 yield call(loginOut) } yield take(‘loginOut’)等待类型为loginOutaction到来时,Generator开始继续执行后面的代码,即...fork表现形式为创建一个分叉task去执行fn,且fork所在saga不会在等待fn返回结果时候被中间件暂停,相反,它在fn被调用时便会立即恢复执行。...一个task就想一个在后台运行进程,redux-saga应用程序可以运行多个task,task可通过fork函数创建。

1.3K20
  • React saga_react获取子组件ref

    大家好,又见面了,是你们朋友全栈君。...这些Effect执行后,函数resolve时返回一个描述对象,然后redux-saga中间件根据这个描述对象恢复执行generator函数。...不过这里call方法传入函数fn可以是普通函数,也可以是generator。call方法应用很广泛,redux-saga使用异步请求等常用call方法实现。...4.redux-saga实现一个登陆和列表样例 接着我们实现一个redux-saga样例,存在一个登陆页,登陆成功后,显示列表页,并且,列表页,可 以点击登出,返回到登陆页。...5.总结 通过上述章节,我们可以概括出redux-saga做为redux中间件全部优点: 统一action形式,redux-saga,从UIdispatchaction为原始对象 集中处理异步等存在副作用逻辑

    4.5K30

    手写Redux-Saga源码

    本文要讲就是Redux-Saga,这个也是实际工作中使用最多Redux异步解决方案。...也就是说,当你这样写时: yield take("SOME_ACTION"); yield fork(saga); 运行到yield take("SOME_ACTION");这行代码时,整个迭代器都阻塞了...官方文档这种写法反而很好理解,这里采用文档这种写法: export function takeEvery(pattern, saga) { function* takeEveryHelper...也就是说take意思就是:等某某事件,这个事件来之前不许往下走,来了后就可以往下走了。...整个Redux-Saga都是基于Generator,每往下走一步都需要手动调用next,这样他执行到中途时候我们可以根据情况不再继续调用next,这其实就相当于将当前任务cancel了。

    1.7K30

    Redux:从action到saga

    前端应用消失部分 一个现代使用了redux前端应用架构可以这样描述: 一个存储了应用不可变状态(state)store 状态(state)可以被绘制组件里(html或者其他东西)。...const render = (state) => components 组件可以给store分发action 使用reducer这种纯方法根据就状态返回新状态 const reducer = (...但是需要处理异步action(函数式编程里称为副作用)时候事情就没有这么简单了。为了解决这个问题,redux建议使用中间件(尤其是thunk)。...在上面的例子用了两种副作用: 一个put副作用,它会给redux store分发一个action。 一个call副作用,它会执行一个异步方法(promise,cps后者其他saga)。...state使用reducer这样纯方法修改

    1.2K00

    轻松实现 Saga 模式

    最后,将向您展示如何避免随之而来项目失败。 满足持久执行需要 Saga 模式应运而生,以应对复杂软件流程一个紧迫需求:持久执行。...它必须等待所需事务完成,不断重试直到成功,并协调执行队列其他事务。如果一个事务完成之前崩溃,该过程必须能够回滚到一致状态,以保持整个应用程序完整性。...关系数据库回滚失败事务时也会进行这种操作,以保持数据一致性。 使用单独平台管理持久执行可以将这些好处带给事务排序,Temporal 将其称为工作流。...公司使用 Saga 模式处理软件进程上下文切换方面已经朝着正确方向迈出了一步。但是,通过将这些 Saga 模式抽象为一个独立服务而不是应用层,公司可以走得更远。...做好这件事可以将组织软件成熟度提升几年。 第 2 部分:避免临界 本文前半部分,谈到了应用层协调事务和保留状态是多么繁重。

    10410

    前端实现异步几种方式_redux是什么

    这么说有点抽象,我们举个具体例子: 假如你一个在线订票系统上订了一张机票,下单成功后,一般会给你留30分钟付款时间,如果你30分钟内完成付款就可以成功出票,否则会被取消预定。...redux-saga就是一个帮你管理这堆saga管家,那么它跟其他中间件实现有什么不同呢?它使用了ES6Generator函数语法。...但是这样的话不好做模拟(mock)测试:我们测试过程,一般不会真的执行异步任务,而是替换成一个假函数。实际上,我们只需要确保yield了一个正确函数,并且函数有着正确参数。...上等待指定action fork:和call类似,但是是非阻塞,立即返回 比如我们之前用到takeEvery()函数,其实内部实现就是不停地take -> fork -> take ->...借用网上一张神图更直观地理解上面这些API作用: 另外,如果你想要同时监听不同action,可以使用all()或者race()把他们组合成一个root saga: export default

    1.7K30

    深入理解 redux 数据流和异步过程管理

    组件从 store 取数据,交互时候去通知 store 改变对应数据。...但是 context 做为 store 有一个问题,任何组件都能从 context 取出数据修改,那么排查问题时候就特别困难,因为并不知道是哪个组件把数据改坏,也就是数据流不清晰。...这样数据流动是单向,清晰,很容易管理。 这就像为什么我们公司里想要什么权限都要走审批流,而不是直接找某人,一样道理。集中管理流程比较清晰,而且还可以追溯。...异步过程管理 很多情况下改变 store 数据都是一个异步过程,比如等待网络请求返回数据、定时改变数据、等待某个事件改变数据等,那这些异步过程代码放在哪里呢? 组件?...比如通过 take、takeEvery、takeLatest 监听 action,然后执行 worker saga

    2.5K10

    Dva 底层是如何组织起 Redux 数据流

    但随之而来通常会有这样疑问:概念太多,并且 reducer, saga, action 都是分离(分文件)。 文件切换问题。...包括: State 数据,通常为一个 JavaScript 对象,操作时候每次都要当作不可变数据(immutable data)对待,保证每次都是全新对象,没有引用关系,这样才能保证 State 独立性... createSagaMiddleware 创建 saga中间件,调用中间件 run 方法所有收集起来异步方法 // run方法监听每一个副作用action,action发生时候,执行对应..., eg: logging 这样, 各个部分各司其职, 耦合度更低, 复用度更高, 扩展性更好。...因为我们可以使用 Middleware 拦截 action, 这样异步网络操作也就很方便了, 做成一个 Middleware 就行了, 这里使用 redux-saga 这个类库, 举个栗子: 点击创建

    1.4K10

    react项目架构之路初探

    Sagas 可以被看作是在后台运行进程,Sagas 监听发起action,然后决定基于这个 action做什么 redux-saga 世界里,所有的任务都通用 yield Effects 完成...(dispatch,getState),函数体内进行业务逻辑封装 redux-thunk缺点: action形式不统一 ,异步操作太分散,分散了各个action redux-saga本质是一个可以自执行...reduxsauce 传统开发reducer中区分不同action 使用是switch case结构 针对每一个actiontype进行判断 使用reduxsauce之后 认为 它和.../saga' // 引入saga相关组件 import createSagaMiddleware from 'redux-saga' // 引入react-redux相关组件 使redux和react...这种处理很多以后 我们再使用switch 反而不太好用 参照与vuex 声明mumation方式 我们使用了reduxsauce插件 更好标识不同action 同时

    2.4K10

    redux-saga

    作为一个Redux中间件,想让Redux应用副作用(即依赖/影响外部环境不纯部分)处理起来更优雅 二.设计理念 Saga像个独立线程一样,专门负责处理副作用,多个Saga可以串行/并行组合起来,...Effect层存在主要意义是为了易测试性,所以用简单描述对象表示操作,多这样一层指令 虽然可以直接yield Promise(比如上面核心实现里示例),但测试case无法比较两个promise...所以添一层描述对象解决这个问题,测试case可以简单比较描述对象,实际起作用Promise由redux-saga内部生成 这样好处是单测不用mock异步方法(一般单测中会把所有异步方法替换掉...saga 效果相当于让指定task独立顶层执行,与middleware.run(rootSaga)类似 通过fork执行task与当前saga有关 fork所在saga等待forked task...这样保证了LOGOUT总是执行过LOGIN之后某个时刻发生,代码看起来相当漂亮 特定操作提示 // 创建第3条todo时候,给出提示消息 function* watchFirstThreeTodosCreation

    1.9K41

    前端高频react面试题整理5

    尤雨溪社区论坛说道∶ 框架给你保证是,你不需要手动优化情况下,依然可以给你提供过得去性能。...Reactprop或者state发生变化时,可以通过shouldComponentUpdate生命周期函数执行return false阻止页面的更新,从而减少不必要render执行。...但是对于合成事件来说,有一个事件池专门管理它们创建和销毁,当事件需要被使用时,就会从池子复用对象,事件回调结束后,就会销毁事件对象上属性,从而便于下次复用事件对象。...为了解决这些问题,Hook 使非 class 情况下可以使用更多 React 特性。 从概念上讲,React 组件一直更像是函数。...state改变时,组件通过重新渲染响应:// 正确做法This.setState({message: ‘Hello World’});这三个(...) React 干嘛用?...

    92830

    简析redux技术栈(二):认识sagabuffer和chanel

    例如下面使用了redux-sagareact项目需要以下这样 初始化 function configureStore(initialState) { // 运行返回一个redux middleware...我们平时写代码 react saga 进行交互,都是dispatch一个action到与我们 saga 逻辑进行交互。...翻看createSagaMiddleware源码,可以很清晰看到,这就是使用了中间件后,我们每次dispatch一个 action 后, saga 中间件内会往channel内put这个action...这样,无论take还是put,时间复杂度都是o(1) pushIndex达到了 buffer 长度时候,buffer 处理会根据 buffer 类型不同进行处理 1、ON_OVERFLOW_THROW...chanel一些使用参考可以看文档 简化 eventChanel 实现如下,其实给订阅函数传进一个函数,调用这个函数可以往 Chanel 内 put 东西。

    1.1K10

    6个免费好用LiDAR软件

    要找到免费激光雷达数据处理软件并不容易,因此在这篇文章,我们将介绍6个最出色免费或开源LiDAR软件,可以用于3D云查看、云数据分析、云操作等。...首先,你可以拖放LAS和LAZ文件,我们非常喜欢这一特性。无需转换为中间格式,因为 QGIS 3 可以处理原始点云格式。 QGIS3提供有基于类、高度和 RGB 属性表示选项。...处理操作过程,右下角进度提示还要等待多久才能完成。 处理完成后,输出将添加到你地图中。可以目录"Layer"选项卡查看。...4、http://Plas.io - 最好 Web LiDAR查看器 浏览器查看激光雷达数据有可能?...下次你看到LAS文件时,可以试试GRASS。 GRASS GIS设置把折磨疯了,只想逃地远远地。当你开始使用这个软件时,启动屏幕上需要设置成千上万个参数。

    5.4K40

    微服务场景下数据一致性解决方案 - saga

    使用Saga条件 Saga看起来很有希望满足我们需求。所有长活事务都可以这样?...通过将这些事件持久化saga log,我们可以saga恢复到上述任何状态。...服务处于不确定状态并与协调器失去连接时, 它只能选择等待协调器恢复,或者咨询其他确定状态下服务来得知协调器决定。...因为插入记录后服务可能崩溃,我们无法确定是否新事件已发送,所以每个服务还需要额外事件表跟踪当前长活事务处于哪一步。 ? 一旦长活事务最后一个服务完成其子事务,它将通知它在事务前一个服务。...事务可补偿情况下, 相比TCC,saga对业务逻辑几乎没有改动需要,而且性能更高。集中式saga设计解耦了服务与数据一致性逻辑及其持久化设施, 并使排查事务问题更容易。

    1.1K20

    高级前端react面试题总结

    通过这样做, React 将会知道发生的确切变化,并且通过了解发生什么变化,只需绝对必要情况下进行更新即可最小化 UI 占用空间React Hooks平时开发需要注意问题和原因(1)不要在循环...,条件或嵌套函数调用Hook,必须始终 React函数顶层使用Hook这是因为React需要利用调用顺序正确更新相应状态,以及调用相应钩子函数。...提供了⼤量Saga 辅助函数和Effect 创建器供开发者使⽤,开发者⽆须封装或者简单封装即可使⽤灵活: redux-saga可以将多个Saga可以串⾏/并⾏组合起来,形成⼀个⾮常实⽤异步flow易测试...涉及组件嵌套,父组件中使用props.children把所有子组件显示出来。...可以这样:把Radio看做子组件,RadioGroup看做父组件,name属性值RadioGroup这个父组件设置。

    4.1K40

    微服务分布式事务Saga模式简介

    但是,传统2PC/ACID事务在上面任何一个步骤失败时会使用回滚操作,比如第三步出错,因为是两段提交,所以,第二段就不会进行确认提交,而是进行回滚Rollback,这样订单状态就恢复到当前事务之前状态...有两种可选方案:首先是Saga流程全部完成时再发送响应,这样好处是响应带有处理结果,但是这样会降低可用性,CAP定理,分布式环境满足了C一致性,只能降低了可用性A。...3.如果会花费很长时间,可以显示“正在处理...” 4.Saga处理完成后可以采取服务器推送结果到浏览器。 Saga是否实现了ACID?...ACID是原子性 一致性 隔离性和持久性总称: 1.原子性是确保事务中所有步骤要么全部完成,要么全部撤销回滚。Saga可以事务任何一个步骤发生失败时,通过调用应用服务回滚接口实现撤销。...和Choreography:各个服务之间没有一个协调,靠服务自己相互直接协调,如果集体舞一样(当然有时会有一个领舞者,但是不明显)。

    1.9K20

    一文梭穿Vuex、Flux、Redux、Redux-saga、Dva、MobX

    中间件 刚才说到都是比较理想同步状态。实际项目中,一般都会有同步和异步操作,所以 Flux、Redux 之类思想,最终都要落地到同步异步处理。...redux-saga 采用了另外一种思路,它没有把异步操作放在 action creator ,也没有去处理 reductor,而是把所有的异步操作看成“线程”,可以通过普通action去触发它,操作完成时也会触发...举个例子: // saga.js import { take, put } from 'redux-saga/effects' function* mySaga(){ // 阻塞: take方法就是等待...异步数据获取相关业务逻辑放在了单独 saga.js ,不再是掺杂 action.js 或 component.js 。...其实 redux-saga 是用一些学习复杂度,换来了代码高可维护性,还是很值得项目中使用。 Dva Dva是什么呢?

    5.5K10

    saga分布式事务_分布式事务原理

    往前重试支持,需要把全局事务所有子事务事先编排好并保存,然后失败时,重新读取未完成进度,并重试继续执行。...接口入侵强,只能使用特定输入输出接口参数类型,云原生时代,对强类型gRPC不友好(gRPC协议,TM拿不到用户自定义输入输出pb文件,因此无法解析结果字段 非状态机实现 这一类实现有...这样用户可以根据每个分支结果,做灵活判断与执行。 SAGA定位是一致性要求较低长事务/短事务。...状态机提供灵活性对于客户端编排TCC是没必要,但是对于保存在服务器端saga是有意义最初设计saga时候,进行了较详细权衡取舍。...订票子事务可以自己逻辑,如果未下订单,则下订单;如果已下订单,那么此时就是重试请求,可以去第三方查询结果,最后返回成功/失败/进行

    1.6K20

    react高频面试题总结(一)

    React Hook 使用限制有哪些?React Hooks 限制主要有两条:不要在循环、条件或嵌套函数调用 Hook; React 函数组件调用 Hook。那为什么会有这样限制呢?...那为什么不要在循环、条件或嵌套函数调用 Hook 呢?因为 Hooks 设计是基于数组实现。用时按顺序加入数组,如果使用循环、条件或嵌套函数很有可能导致数组取值错位,执行错误 Hook。...但是对于合成事件来说,有一个事件池专门管理它们创建和销毁,当事件需要被使用时,就会从池子复用对象,事件回调结束后,就会销毁事件对象上属性,从而便于下次复用事件对象。...EMAScript6版本,作用域是可以改变。为何React事件要自己绑定this React源码具体到某一事件处理函数将要调用时,将调用 invokeGuardedCallback方法。...React Hooks平时开发需要注意问题和原因(1)不要在循环,条件或嵌套函数调用Hook,必须始终 React函数顶层使用Hook这是因为React需要利用调用顺序正确更新相应状态,

    1.3K50
    领券