JavaScript'te Promise'lerde İstisnai Durumlar
Şimdi bir promise içinde meydana gelen istisnai durumları nasıl işleyeceğimizi öğrenelim. Böyle bir durum ortaya çıktığında, promise'i, promise fonksiyonunun ikinci parametresine otomatik olarak giren özel bir reddetme fonksiyonu kullanarak reddetmeliyiz:
let promise = new Promise(function(resolve, reject) {
setTimeout(function() {
...
}, 3000);
});
Promise fonksiyonunun içinde, eğer her şey normalse
resolve, ya da bir istisnai durum ortaya
çıktıysa reject çağırmalıyız:
let promise = new Promise(function(resolve, reject) {
setTimeout(function() {
let isError = false;
if (!isError) {
resolve([1, 2, 3, 4, 5]); // promise verisi
} else {
reject('promise içinde hata'); // hata mesajınız
}
}, 3000);
});
Daha sonra, then metoduna parametre olarak
bir değil, iki fonksiyon geçirmelisiniz: birincisi,
promise normal şekilde çalıştığında (resolved oldu)
çalışacak, ikincisi ise hata ile çalıştığında
(rejected oldu) çalışacak:
promise.then(
function(result) {
console.log(result); // promise sonucunu yazdırır
},
function(error) {
console.log(error); // hata mesajını yazdırır
}
);
Kural olarak, yukarıdaki kod daha kompakt bir şekilde şöyle yazılır:
promise.then(function(result) {
console.log(result); // promise sonucunu yazdırır
}, function(error) {
console.log(error); // hata mesajını yazdırır
});
0'dan 5'e kadar rastgele sayılar üreten asenkron bir kod yapın. Tüm bunları bir promise içine alın. Promise'in sonucu olarak, birin üretilen sayıya bölümünün sonucunu döndürsün. Sıfıra bölünme gerçekleştiyse promise bir hata ile tamamlansın, diğer tüm durumlarda ise başarı ile tamamlansın.