Кратко
СкопированоМетод catch
используют для обработки ошибки при выполнении асинхронной операции.
Метод принимает один аргумент — on
. Это функция-колбэк, которая вызовется при переходе промиса в состояние «ошибка» rejected
. Имеет один параметр, в который передаётся информация об ошибке.
Возвращает промис.
Как пишется
Скопировано// Асинхронная функция, которая возвращает промисgetPasswords() .then(function (result) { // Выполнится, если операция успешна }) .catch(function (err) { // Колбэк выполнится, если функция завершилась ошибкой alert(err.message) })
// Асинхронная функция, которая возвращает промис getPasswords() .then(function (result) { // Выполнится, если операция успешна }) .catch(function (err) { // Колбэк выполнится, если функция завершилась ошибкой alert(err.message) })
Как понять
Скопированоcatch
выполняет переданный ему колбэк в нескольких случаях.
Асинхронная операция вызывает функцию reject
внутри промиса:
const rejectInSecond = new Promise(function (resolve, reject) { setTimeout(function () { reject(new Error('время истекло')) }, 1000)})rejectInSecond.catch(function (err) { console.error(err.message) // 'время истекло'})
const rejectInSecond = new Promise(function (resolve, reject) { setTimeout(function () { reject(new Error('время истекло')) }, 1000) }) rejectInSecond.catch(function (err) { console.error(err.message) // 'время истекло' })
Асинхронная операция выбрасывает ошибку с помощью throw
:
const throwInSecond = new Promise(function (resolve, reject) { setTimeout(function () { throw new Error('время истекло') }, 1000)})throwInSecond.catch(function (err) { console.error(err.message) // 'время истекло'})
const throwInSecond = new Promise(function (resolve, reject) { setTimeout(function () { throw new Error('время истекло') }, 1000) }) throwInSecond.catch(function (err) { console.error(err.message) // 'время истекло' })
На практике
Скопированосоветует Скопировано
🛠 Всегда завершайте цепочки промисов вызовом метода catch
. Если в одной из операций в цепочке произойдёт ошибка, она не обработается и перестанет работать на всей странице. JavaScript выведет в консоль разработчика сообщение Uncaught
.