解決dva dispatch yield生成器函數中異常中斷,無法繼續調用的問題
阿新 • • 發佈:2018-07-12
fine defined login 決定 log 返回 spa def clas
在生成器函數中,哪怕是一點報錯。都會導致程序無法再次執行。這是yield的特性導致的。
最簡單的解決方案,就是將所有報錯回避,並且做好交互。
1、將所有可能異常的地方判斷好,不讓代碼繼續執行yield即可,說白了,就是多判斷變量的合法性(undefined、null),
以下面的demo為例來說:response就算異常,也中會返回undefined、所以可以根據這個來決定是否還要執行。
const response = yield call(loginAdminUser, payload); if (response) { yield put({ type: ‘changeCloudLoginStatus‘, payload: response, }); } else {
// ... 交互
}
2、使用 try...catch 解決
try { // 對接ljdp後端登錄 const response = yield call(loginAdminUser, payload); yield put({ type: ‘changeCloudLoginStatus‘, payload: response, }); } catch (e) { // ... 交互 }
解決dva dispatch yield生成器函數中異常中斷,無法繼續調用的問題