Worker Saga 用于执行真正的任务,在这里可以使用 call 来发送请求,可以通过 put 来调用 reducerWatcher Saga 用于监听 action, 当 dispatch 到所监听的 action 时,就会调用对应的 Worker SagarootSaga 则用于启动 Watcher Saga 通常对于异步请求的流程是,页面 dispatch action => Watcher Saga 监听到 action,启动...
call call是阻塞调用的。 call(fn, args):它将创建一个Effect,用来命令中间件以args参数调用fn,fn可以是一个Generator函数也可以是一个返回Pormise或任意其他值的普通函数。如果返回Promise将获得Promise的value。 call创建的Effect会命令中间件调用传入的函数,并检查其结果,如果结果是迭代器对象或者是Promise实例中间件...
4、阻塞调用和无阻塞调用 redux-saga 可以用 fork 和 call 来调用子 saga ,其中 fork 是无阻塞型调用,call 是阻塞型调用。 如果看过 saga 的论文,就知道 saga 是由许多子 saga (或者 subtransaction)组合起来的。fork Effect 和它的字面意思一样,即创建一个子 saga 。 4.1、fork 下面写一个倒数的例子,当...
call 操作是用来发起异步操作的,对于 generator 来说,call 是阻塞的操作,它在 Generator 调用结束之前不能执行或处理任何其他事情。,但是 fork 却是非阻塞操作,当 fork 调动任务时,该任务会在后台执行,此时的执行流可以继续往后面执行而不用等待结果返回。例如如下的登录场景:function* loginFlow() { while(...
yield call(fetch,'/userInfo',username) put 在前面提到,redux-saga做为中间件,工作流是这样的: UI——>action1———>redux-saga中间件———>action2———>reducer.. 从工作流中,我们发现redux-saga执行完副作用函数后,必须发出action,然后这个action被reducer监听,从而达到更新state的目的。相应的这里的put...
call 和 put 是saga的API,相当于dispatch,但是并不是真正执行dispatch,只是发送你指定的指令,交由saga中间件来执行这个指令。这样看来,这个saga函数就是一些指令的集合,称为effects,副作用,用来描述任务 为啥要描述指令而不直接调用呢?这样是因为易于测试,如果直接调用,你还得模拟调用的函数,详见redux-saga文档。 我...
react-saga有3个重要的函数:call ,put takeEvery。 call:在worker saga里执行异步函数; put:异步函数有结果的时候,派发action; takeEvery:当监听到aciton时,执行worker saga。 saga主要用到的是generator。 使用: 新建sagas.js import { takeEvery , put} from 'redux-saga/effects'import axios from'axios'; ...
redux-saga是管理redux异步操作的中间件,redux-saga通过创建sagas将所有异步操作逻辑 收集在一个地方集中处理。 sagas采用Generator函数来yield Effects。Generator函数可以暂停执行,再次执行的时候 从上次暂停的地方继续执行。常见的effect有:fork,call,take,put,cancel ...
call方法,调用Promise对象 第一个参数是函数名,而不是去执行函数,后面跟着的就是参数 import{takeEvery,put,call}from"redux-saga/effects" import{post}from"@/utils/http" function*watchSaga() { yieldtakeEvery('asyncadd',addSaga) } /* 在此处完成网络请求 */ ...
fork 解释: fork和call函数类似 但是fork是非阻塞函数 不会等待执行 put 解释: put函数相当于redux的dispatch 当put一个action后。reducer中就会计算新的state并返回 注意: put也是阻塞effect call 解释: call函数 调用其他函数 调用的函数可以是Generator 或者是返回一个promise的简单函数 call函数页数阻塞effect ...