redux-saga
中文文档地址:https://redux-saga-in-chinese.js.org/
- 纯净
- 强大
- 灵活
在saga任务中,如果yield了一个普通数据,saga不作任何处理,仅仅将数据传递给yield表达式(把得到的数据放到next的参数中),因此,在saga中,yield一个普通数据没什么意义。
saga需要你在yield后面放上一些合适的saga指令(saga effects),如果放的是指令,saga中间件会根据不同的指令进行特殊处理,以控制整个任务的流程。
每个指令本质上就是一个函数,该函数调用后,会返回一个指令对象,saga会接收到该指令对象,进行各种处理
一旦saga任务完成(生成器函数运行完成),则saga中间件一定结束
- take指令:【阻塞】监听某个action,如果action发生了,则会进行下一步处理,take指令仅监听一次。yield得到的是完整的action对象
- all指令:【阻塞】该函数传入一个数组,数组中放入生成器,saga会等待所有的生成器全部完成后才会进一步处理
- takeEvery指令:不断的监听某个action,当某个action到达之后,运行一个函数。takeEvery永远不会结束当前的生成器