本文主要是介绍umi-dva中effects里使用yield call/put当请求Promise接口报错时,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
如果yield call的是一个Promise对象,那只有在Promise返回的是resolve方法的情况下,下面跟着的yield put及后面的代码才会执行,若返回了rejector则后面的代码则全部停止执行。
// models/mdeical.ts文件:
* fetchMedicalLast({ payload }, { call, put }) {const { medicalIndexList } = yield call(api.medical.fetchMedicalLast, payload);yield put({type: 'saveMedicalLast',payload: medicalIndexList,});
},// tsx文件使用
dispatch({type: 'medical/fetchMedicalLast',payload: { sid },
});
如上使用,当接口请求成功,不会出现问题。但当接口出现报错,yield就不会往下执行了。并且再次dispatch也无效。所以我们需要用try catch包裹 yield语句
effects: {* fetchMedicalLast({ payload }, { call, put }) {try {const { medicalIndexList } = yield call(api.medical.fetchMedicalLast, payload);yield put({type: 'saveMedicalLast',payload: medicalIndexList,});} catch (err) {console.log('接口请求失败', err);}},},
这篇关于umi-dva中effects里使用yield call/put当请求Promise接口报错时的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!