Ինչպե՞ս ես վարվում, երբ խոստումը ավարտվում է սխալով (մերժում):
sobes.tech AI
Պատասխան AI-ից
Механізмы апрацоўкі з дапамогай метадаў .catch() або .finally().
.catch() выкарыстоўваецца для апрацоўкі адхіленых прамісаў. Калі прамис паспяхова выконваецца, блок .catch() ігнаруецца.
// Апрацоўка памылкі з дапамогай .catch()
fetch('/api/data')
.then(response => {
if (!response.ok) {
throw new Error('Request failed'); // Імітацыя памылкі
}
return response.json();
})
.then(data => {
console.log('Data received:', data);
})
.catch(error => {
console.error('Error:', error); // Апрацоўка памылкі тут
});
.finally() выконваецца незалежна ад таго, скончыўся прамис паспяхова (fulfill) або з памылкай (reject). Ён карысны для ачысткі рэсурсаў або схавання індыкатараў загрузкі.
// Выкарыстанне .finally() для выканання кода пасля завяршэння прамісу
fetch('/api/data')
.then(response => {
if (!response.ok) {
throw new Error('Request failed');
}
return response.json();
})
.then(data => {
console.log('Data received:', data);
})
.catch(error => {
console.error('Error:', error);
})
.finally(() => {
console.log('Request finished.'); // Гэты код выконваецца заўсёды
});
Таксама магу выкарыстоўваць канструкцыю try...catch унутры async функцый для апрацоўкі памылак асінхронных аперацый, уключаючы прамісы:
// Апрацоўка памылкі ў async/await з дапамогай try...catch
async function fetchData() {
try {
const response = await fetch('/api/data');
if (!response.ok) {
throw new Error('Request failed');
}
const data = await response.json();
console.log('Data received:', data);
} catch (error) {
console.error('Error:', error); // Апрацоўка памылкі тут
} finally {
console.log('Fetch operation finished.'); // Выконваецца заўсёды
}
}
fetchData();
Выбар метаду залежыць ад кантэксту і патрабаванай логікі апрацоўкі. .catch() — асноўная канструкцыя для рэакцыі на памылкі, а .finally() — для дзеянняў, якія выконваюцца незалежна ад выніку. try...catch у async функцыях забяспечвае больш звыклы сінхронны стыль апрацоўкі памылак.