Redux-Saga中的effect哪些是非阻塞的
1.Redux-Saga中的effect一共有一下类别:
export const effectTypes: { TAKE: 'TAKE' PUT: 'PUT' ALL: 'ALL‘ RACE: 'RACE' CALL: 'CALL' CPS: 'CPS' FORK: 'FORK' JOIN: 'JOIN' CANCEL: 'CANCEL' SELECT: 'SELECT' ACTION_CHANNEL: 'ACTION_CHANNEL' CANCELLED: 'CANCELLED' FLUSH: 'FLUSH' GET_CONTEXT: 'GET_CONTEXT' SET_CONTEXT: 'SET_CONTEXT' }
2.首先我们先来了解下阻塞和非阻塞的概念
非阻塞:
非阻塞意思是假如这个action中有中间件,或一些异步操作造成了store信息更新不及时,那么effects中并不会等着这些操作执行完,即会继续执行接下来的操作。
阻塞
这个是同步操作,那么effects中会等待这些操作执行完,所以接下来取的store信息一定会是最新的
3.根据源码和官网信息总结如下
function | block |
---|---|
take | Blocking |
call | Blocking |
all | Blocking |
put | Non-Blocking |
putResolve | Blocking |
fork | Non-blocking |
cancel | Non-blocking |
join | Blocking |
cps | Non-blocking |