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

redux-saga学习

,所有的任务都通过用 yield Effects 来完成 ( effect可以看作是redux-saga的任务单元 ) redux-saga启动的任务可以在任何时候通过手动来取消,也可以把任务和其他的Effects...阻塞调用/非阻塞调用 阻塞调用的意思是,Sagayield Effect 之后会等待其执行结果返回,结果返回后才会恢复执行 Generator 中的下一个指令。...function* saga() { yield take(ACTION) // 阻塞: 将等待 action yield call(ApiFn, ...args)...// 阻塞: 将等待 ApiFn (如果 ApiFn 返回一个 Promise 的话) yield call(otherSaga, ...args) // 阻塞: 将等待 otherSaga 结束 yield...本站仅提供信息存储空间服务,拥有所有权,承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

2.7K10
您找到你想要的搜索结果了吗?
是的
没有找到

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

那么问题来了,为了保证数据的一致性,我们是不是应该等待刚才那个LLT执行完成呢?这显然不现实,因为这意味着在这30分钟内,其他人都没办法订票了。。。...3.什么是redux-sagaredux-saga是一个Redux中间件,用来帮你管理程序的副作用。或者更直接一点,主要是用来处理异步action。...这就是redux-saga中最为重要的一个概念:Effect。 实际上,我们可以直接通过yield fetchUser()执行我们的异步任务,并返回一个Promise。...因此,相比于直接调用异步函数,我们可以仅仅 yield 一条描述函数调用的指令,由redux-saga中间件负责解释执行该指令,并在获得结果响应时恢复Generator的执行。...本站仅提供信息存储空间服务,拥有所有权,承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

1.7K30

redux-saga

作为一个Redux中间件,想让Redux应用中的副作用(即依赖/影响外部环境的不纯的部分)处理起来更优雅 二.设计理念 Saga像个独立线程一样,专门负责处理副作用,多个Saga可以串行/并行组合起来,...通过框架约束,多一层描述对象来避免mock 这样做并不十分完美,还存在2个问题: 业务代码稍显麻烦(直接yield promise/dispatch action,而都要用框架提供的creator(call...task与当前saga有关 fork所在的saga等待forked task,只有在所有forked task都执行结束后,当前saga才会结束 fork的执行机制与all完全一致,包括cancel和...术语Saga指的是一系列操作的集合,是个运行时的抽象概念 redux-saga里的Saga形式上是generator,用来描述一组操作,而generator是个具体的静态概念 P.S.redux-saga...简单理解的话:在redux-saga里,Saga就是generator,Sagas就是多个generator Sagas有2种顺序组合方式: yield* saga() call(saga) 同样,直接

1.9K41

React + Redux 最佳实践

另外,推荐用 redux-immutable 以及 redux-immutablejs,一是没啥必要,具体看他们的实现就知道了,都比较简单;更重要的是他们都改写了 combineReducer,会带来潜在的一些兼容问题...但基于约定会带来额外的学习成本和遍,比如 rscss 要求所有的 Component 都是两个词的连接,比如 Header 就必须换成类似 HeaderBox 这样。...方案 redux-saga: 用于管理 action,处理异步逻辑。可测试、可 mock、声明式的指令。 可选 redux-loop: 适用于相对简单点的场景,可以组合异步和同步的 action 。...saga 入门 在 saga 之前,你可能会在 action creator 里处理业务逻辑,虽然能跑通,但是难以测试。...function *hello() { // 等待 action `BEGIN_REQUEST` yield take('BEGIN_REQUEST'); // dispatch action

1.5K50

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

异步过程的管理 很多情况下改变 store 数据都是一个异步的过程,比如等待网络请求返回数据、定时改变数据、等待某个事件来改变数据等,那这些异步过程的代码放在哪里呢? 组件?...redux-saga redux-saga 并没有改变 action,它会把 action 透传给 store,只是多加了一条异步过程的处理。...'redux-saga/effects' function* rootSaga() { yield all([ takeLatest('login', login),...) yield put({ type: 'loginSuccess', loginInfo }) } catch (error) { yield put({ type: 'loginError...但是 redux-saga 的优点还有基于 generator 的良好的可测试性,而且大多数场景下,redux-saga 提供的异步过程的处理能力就足够了,所以相对来说,redux-saga 用的更多一些

2.4K10

手写Redux-Saga源码

本文仍然是老套路,先来一个Redux-Saga的简单例子,然后我们自己写一个Redux-Saga来替代他,也就是源码分析。...也就是说,当你这样写时: yield take("SOME_ACTION"); yield fork(saga); 当运行到yield take("SOME_ACTION");这行代码时,整个迭代器都阻塞了...fork的使用跟call很像,也是可以直接调用传进来的方法,只是call会等待结果回来才进行下一步,fork不会阻塞这个过程,而是当前结果没回来也会直接运行下一步: fork(fn, ...args);...() { while (true) { yield take(pattern); yield fork(saga); } } return fork(takeEveryHelper...作者博文GitHub项目地址: github.com/dennis-jian… 作者掘金文章汇总:juejin.im/post/5e3ffc… 我也搞了个公众号[进击的大前端],不打广告,写水文,只发高质量原创

1.7K30

dva

简言之:dva想提供一个基于业界react&redux最佳实践的业务框架,以解决用裸redux全家桶作为前端数据层带来的种种问题 编辑成本高,需要在reducer, saga, action之间来回切换...依赖关系 dva react react-dom dva-core redux redux-saga history react-redux react-router-redux...model配置得到reducers,worker sagas, states后,屏蔽接下来的一系列繁琐工作: 接redux(组合state,组合reducer) 接redux-saga(完成redux-saga...和redux,靠redux中间件机制把redux-saga拉进来一起玩) 到这里差不多封装好了,那么,下面开一些口子增加一点灵活性: 递出一堆钩子(effect/reducer/action/state...put({ type: SHOW, payload: { namespace, actionType } }); yield effect(...args); yield put(

1.9K50

react项目架构之路初探

Sagas 可以被看作是在后台运行的进程,Sagas 监听发起的action,然后决定基于这个 action来做什么 在 redux-saga 的世界里,所有的任务都通用 yield Effects 来完成...,thunks 是在action被创建时调用,而 Sagas只会在应用启动时调用 redux-thunk中间件可以让action创建函数先返回一个action对象,而是返回一个函数,函数传递两个参数...(dispatch,getState),在函数体内进行业务逻辑的封装 redux-thunk的缺点: action的形式统一 ,异步操作太分散,分散在了各个action中 redux-saga本质是一个可以自执行的.../saga' // 引入saga中相关组件 import createSagaMiddleware from 'redux-saga' // 引入react-redux相关组件 使redux和react...image 参考文献 React+Redux-Saga+Seamless-Immutable+Reduxsauce后台系统搭建之路 reduxsauce npm地址 redux-saga中文 redux-saga

2.4K10

【Web技术】639- Web前端单元测试到底要怎么写?

项目用到的技术框架 该项目采用 react 技术栈,用到的主要框架包括:react、 redux、 react-reduxredux-actions、 reselect、 redux-saga、 seamless-immutable...这么简单的界面和业务逻辑,还是真实场景,还需要写神马单元测试? 别急,为了保证文章的阅读体验和长度适中,能讲清楚问题的简洁场景就是好场景不是?慢慢往下看。...设计模式与结构分析 在这个场景设计开发中,我们严格遵守 redux 单向数据流 与 react-redux 的最佳实践,并采用 redux-saga 来处理业务流, reselect 来处理状态缓存,通过...saga 是一种 es6 的生成器函数 - Generator ,我们利用他来产生各种声明式的 effects ,由 redux-saga 引擎来消化处理,推动业务进行。...从上面的注释 3、4 可以看到, redux-saga 还提供了一些辅助函数来方便的处理分支断点。 这也是我选择 redux-saga 的原因:强大并且利于测试。

3K30

扫码

添加站长 进交流群

领取专属 10元无门槛券

手把手带您无忧上云

扫码加入开发者社群

相关资讯

热门标签

活动推荐

    运营活动

    活动名称
    广告关闭
    领券