Почему событие unhandledrejection не может отловить какую-то ошибку в React? - PullRequest
0 голосов
/ 27 декабря 2018

unhandledrejection не может поймать какую-то ошибку в сборке проекта с creat-react-app.

Пример

window.addEventListener("unhandledrejection", function(e) {
  console.log(e);
  alert(e.reason);
});

function onclick() {
  Promise.resolve().then(() => {
    abcd(); // not alert
    // throw "abcd"; // alert
  });
}

function App() {
  return (
    <div className="App">
      <h1>Hello CodeSandbox</h1>
      <h2>Start editing to see some magic happen!</h2>
      <button onClick={onclick}>error</button>
    </div>
  );
}

1 Ответ

0 голосов
/ 27 декабря 2018

Вы можете поймать отклоненные обещания.

someFunctionReturnsPromise()
.then(resolvedValue => { /* do stuff */ })
.then(anotherResolvedValue => { /* do more stuff */ })
.catch(error => { /* handle any rejected promises here */ })
.finally(() => { /* you can do stuff here regardless of promise resolution */ });

Исключение обработанного обещания

Хотя теперь я понимаю, что вы спрашиваете, зачем добавлять слушателя для unhandledrejectionне ловит ошибки вообще.На самом деле выполняет работу и отлавливает неопределенную ошибку функции, выданную abcd().

Необработанный обработчик событий, отвечающий на отклонение обещания

Это должно бытьотметил, что событие unhandledrejection не имеет универсальной поддержки браузера, фактически оно поддерживается только в в Chrome 49+.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...