როგორ მართავ სიტუაციას, როდესაც ვადა შეცდომით (უარყოფა) დასრულდება?
sobes.tech AI
პასუხი AI-სგან
Методдор менен иштөө .catch() же .finally() аркылуу.
.catch() колдонулат убада (promise) четке кагылган учурда. Эгер убада ийгиликтүү аяктагандан кийин, .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) же каталар менен аяктагандан кийин иштейт. Ал ресурстарды тазалоо же жүктөө көрсөткүчтөрүн жашыруу үчүн пайдалуу.
// Убада аяктагандан кийин кодду иштетүү `.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 функцияларында синхрондуу стили менен каталарды иштетүүгө мүмкүндүк берет.