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

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

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生成器函數中異常中斷,無法繼續調用的問題