- Если обрабатываем промис и возвращаем его, в
onRejectedвозвращаемPromise.reject(error)либо не используемonRejected, чтобы в любом случае была возможность обработать reject снаружи.const load = () => { return fetcher.get('/url') .then( (data) => { // Do something return data; }, (error) => { // Do something return Promise.reject(error); } ); } load().then( (data) => console.log('Done!', data), (error) => console.log('Error!', error) );
const load = () => { return fetcher.get('/url') .then((data) => { // Do something return data; }); } load().then( (data) => console.log('Done!', data), (error) => console.log('Error!', error) );
- Если обрабатываем промис и НЕ возвращаем его, пишем в
onRejectedconsole.error, чтобы избежать эксцепшенаUncaught in Promiseи при этом узнать об ошибке.const load = () => { fetcher.get('/url') .then( (data) => { // Do something }, console.error ); }
- Чтобы не усложнять, можно сохранить промис в переменную, на неё навесить
thenс обработкой, где естьonRejectedлибоconsole.error, а вернуть исходный промис.const load = () => { const promise = fetcher.get('/url'); promise.then( (data) => { // Do something }, (error) => { // Do something } ); return promise; } load().then( (data) => console.log('Done!', data), (error) => console.log('Error!', error) );
- Не используем
catchпослеthen, чтобы эксцепшены изonFilfilledпопали в Sentry.
Last active
February 26, 2021 01:19
-
-
Save ipetropolsky/ebef64e4463c133f8c1637683682630d to your computer and use it in GitHub Desktop.
Как не получить Uncaught in Promise
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment