Redux-Saga и AbortController выдают - PullRequest
0 голосов
/ 06 июня 2019

У меня есть вопрос о redux-saga вместе с abortController.Посмотрите на пример кода saga.js ниже:

// saga.js    
import { cancelled, call, takeLatest } from 'redux-saga/effects';

    const makeRequest = async (option) => {
    try {
        const response = await fetch('https://jsonplaceholder.typicode.com/todos/1', option);
          return response ;
      } catch (err) {
        console.log('(1) Abort Error', err);
        throw new Error('(2) Error cannot be catch and not be warning in anywhere');
      }
    }
    export function* sagaFunc() {
       const abortController = new AbortController();
       try {
         const res = yield call(makeRequest, {
            signal: abortController.signal
          });
         console.log(res)
        } catch (error) {
          console.log('(3) This catch does not catch anything', error)
        } finally {
          if (yield cancelled()) {
            abortController.abort('Cancel request');
          }
        }
    }
    export default function* rootSaga() {
      yield takeLatest('SAMPLE_ACTION', sagaFunc);
    }

Проблема в том, что когда я повторно отправляю 'SAMPLE_ACTION', который является yield как takeLatest, предыдущая сага будет отменена, и запрос будет отменен, потому что он выбрасываетпрерванная ошибка, и я могу зарегистрировать ее как (1) console.log.

Затем я выбрасываю новую ошибку как (2), но эта ошибка не может быть перехвачена, и браузер не отображал никаких сообщений об ошибкахо неперехваченной ошибке .

Для ошибки перехвата в (3) это не будет триггер, я уже понимаю об этом случае.Но я все еще запутался в случае (2), почему эта ошибка метания, похоже, игнорируется?

...