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

在生成器函數中,哪怕是一點報錯。都會致使程序沒法再次執行。這是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) {
  // ... 交互
}
相關文章
相關標籤/搜索