解決dva dispatch yield生成器函數中異常中斷,無法繼續調用的問題


在生成器函數中,哪怕是一點報錯。都會導致程序無法再次執行。這是yield的特性導致的。
最簡單的解決方案,就是將所有報錯回避,並且做好交互。

 

0、dva全局管理出錯狀態

https://dvajs.com/api/#onerror-err-dispatch

 

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) {
  // ... 交互
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM