Bir vədin səhv (rədd) ilə başa çatdığı vəziyyətlə necə məşğul olursan?
sobes.tech Süni İntellekt
AI-dan cavab
Mən .catch() və ya .finally() metodları ilə işləyirəm.
.catch() rədd edilmiş vədləri işləmək üçün istifadə olunur. Əgər vəd uğurla həll olunursa, .catch() bloku ignored edilir.
// Xəta ilə işləmə `.catch()` ilə
fetch('/api/data')
.then(response => {
if (!response.ok) {
throw new Error('Request failed'); // Səhv simulyasiyası
}
return response.json();
})
.then(data => {
console.log('Alınan məlumat:', data);
})
.catch(error => {
console.error('Xəta:', error); // Xətanın işlənməsi burada
});
.finally() vəd uğurlu (fulfill) və ya uğursuz (reject) olmasından asılı olmayaraq, həmişə icra olunur. Bu, resursların təmizlənməsi və ya yükləmə göstəricilərinin gizlədilməsi üçün faydalıdır.
// `.finally()` istifadə edərək, vəd tamamlandıqdan sonra kodu icra etmək
fetch('/api/data')
.then(response => {
if (!response.ok) {
throw new Error('Request failed');
}
return response.json();
})
.then(data => {
console.log('Alınan məlumat:', data);
})
.catch(error => {
console.error('Xəta:', error);
})
.finally(() => {
console.log('Sorğu tamamlandı.'); // Bu kod həmişə icra olunacaq
});
Həmçinin, async funksiyalar daxilində try...catch quruluşundan istifadə edərək, asinxron əməliyyatların, o cümlədən vədlərin, xətalarını idarə etmək mümkündür:
// `async/await` ilə xətaları idarə etmək, try...catch istifadə edərək
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('Alınan məlumat:', data);
} catch (error) {
console.error('Xəta:', error); // Xətanın idarə olunması burada
} finally {
console.log('Fetch əməliyyatı başa çatdı.'); // Həmişə icra olunur
}
}
fetchData();
Metod seçimi kontekstdən və tələb olunan xətaları idarəetmə məntiqindən asılıdır. .catch() əsas xətalara reaksiya vermək üçün əsas quruluşdur, .finally() isə nəticədən asılı olmayaraq həyata keçirilən əməliyyatlar üçün, try...catch isə, async funksiyalarında daha tanış və sinxron tərzdə xətaları idarə etməyə imkan verir.