- call
执行异步请求,阻塞流程。
yield call(外部引入的方法名, 参数)
- put
执行🍌effects中的异步方法时🍌,🍌不阻塞流程🍌,和组件中使用dispatch执行effects方法一样;但在执行reducer
中的状态更新方法时,会阻塞流程
yield put({ type: 'addAge', payload: 10 });
- put.resolve
执行effects中的异步方法时,阻塞流程,类似call。
yield put.resolve({ type: 'addDelay', payload: { amount: 2 } });
- take(‘xxx/@@end’)
监听xxx实行完毕后,再执行之后的代码,放在yield put({type: xxx, payload})方法后使用,将异步转化为同步写法
yield put({ type: 'addDelay', payload: { amount: 2 } });
yield take('addDelay/@@end');
- put + call 实现阻塞式调用
const promise = yield put({ type: 'queryCustomerList', payload: params, callback });
yield call(() => promise);
github issue上的回答:click
参考链接:click