redux-saga


redux-saga是一个redux中间件,它使用 generators

Redux-saga 是一个旨在使应用程序副作用(即数据获取等异步事件和访问浏览器缓存等不确定的事物)更易于管理,执行更高效,易于测试以及更好地处理故障的库。


Sagas 被实现为 Generator functions,它会 yield 对象到 redux-saga middleware。 被 yield 的对象都是一类指令,指令可被 middleware 解释执行。当 middleware 取得一个 yield 后的 Promise,middleware 会暂停 Saga,直到 Promise 完成。 一旦 Promise 被 resolve,middleware 会恢复 Saga 接着执行,直到遇到下一个 yield。

take 等待一个特定的 action(本身不发送)
takeEvery 接收一个函数,异步调用(同 redux-thunk),允许多个实例同时进行
takeLatest 只执行最后一个任务

Effects 是一些简单 Javascript 对象,包含了要被 middleware 执行的指令,下面这些函数生成一个 Effect,测试时比较 Effect
call 用来返回一个 Effect,对于一些无法预测的结果,易于测试
put 用来发送一个 action
cps 用来处理 Node 风格的函数
fork 用户在后台运行,不阻塞调用,返回 task ,可以用来取消
cancel 取消 task
race 用来在多个 Effects 间启动 race,一个完成时其他将自动取消

使用 try/catch 捕获错误