使用场景:当把遍历(
forEach、map等方式)异步网络请求后的结果赋值给同步的变量时,需要使用yield暂停。否则put后打印的结果是正确的,实际并没有正确赋值。原因:网络请求的await / call是异步任务。没有执行完就会执行后面的put
*getWelfareSkus(action, { call, put }) {
const result = yield call(ActivityService.getWelfareSkus, action.payload) || {};
yield result.dataList.map(async(item) => { // -->这里的yield
item.activityData = await ActivityService.getWelfareData(item.skuPath) || {};
});
yield put({ type: 'setWelfareSkus';, payload: result });
},