在生成器函數中,哪怕是一點報錯。都會致使程序沒法再次執行。這是yield的特性致使的。
最簡單的解決方案,就是將全部報錯迴避,而且作好交互。後端
0、dva全局管理出錯狀態api
https://dvajs.com/api/#onerror-err-dispatch函數
一、將全部可能異常的地方判斷好,不讓代碼繼續執行yield便可,說白了,就是多判斷變量的合法性(undefined、null),
如下面的demo爲例來講:response就算異常,也中會返回undefined、因此能夠根據這個來決定是否還要執行。spa
const response = yield call(loginAdminUser, payload); if (response) { yield put({ type: 'changeCloudLoginStatus', payload: response, }); } else {
// ... 交互
}
二、使用 try...catch 解決code
try { // 對接ljdp後端登陸 const response = yield call(loginAdminUser, payload); yield put({ type: 'changeCloudLoginStatus', payload: response, }); } catch (e) { // ... 交互 }