Кратко
СкопированоМетод 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 .