CodeBlanks Logo Icon CodeBlanks

then ve catch

.then ve .catch ile promise zincirleme öğrenirsin.

then ile sonuçu al

Bir Promise'in sonuçunu elde etmek için then yöntemini kullanırsın. then(deger => {...}), Promise fulfilled olduğunda çağrılır ve gelen değeri işler. then de bir Promise döndürdüğü için çağrıları zincirleyebilirsin: her then'in döndürdüğü değer bir sonrakine geçer.

p.then(deger => console.log(deger));

Hata durumunu ayrı işlemek istersen ikinci parametre olarak bir işlev daha verebilirsin: then(deger => {...}, hata => {...}). Ama daha okunaklı yol, hatayı catch ile yakalamaktır.

catch ile hata yakala

Reddedilen bir Promise'in hatasını yakalamak için catch kullanırsın. catch(err => {...}), zincirin herhangi bir yerindeki hatayı yakalar; bu yüzden zincirin sonuna eklenmesi yaygındır.

p
  .then(deger => deger.toUpperCase())
  .catch(err => console.error(err));

catch aslında then(null, err => {...}) yazımının kısayoludur. Hata yakalandıktan sonra catch normal bir değer döndürebilir; bu durumda zincir kurtulmuş sayılır ve sonraki then çalışır.

Uygulama Sıra sende: then ve catch zinciri

new Promise((resolve, reject) => resolve("merhaba")) ile bir Promise oluştur. .then(value => console.log(value)) ile sonuçu yazdır. .catch(err => console.error(err)) ile de hata yakala.

Başlangıç kodu

index.js
// Bir Promise oluştur ve resolve et
// .then ile sonuçu yazdır, .catch ile hatayı yakala

Örnek çözüm

index.js
new Promise((resolve, reject) => resolve("merhaba"))
  .then(value => console.log(value))
  .catch(err => console.error(err));

Beklenen çıktı

merhaba

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 Boşluğu doldur: hata yakala

Soru
p.then(value => console.log(value))
 .____(err => console.error(err));
Cevap
p.then(value => console.log(value))
 .catch(err => console.error(err));

Açıklama: catch, reddedilen Promise'lerde çalışır.

2 Bir Promise zincirinde catch ne zaman çalışır?

  • Zincirdeki herhangi bir Promise rejected olunca Doğru cevap
  • Promise fulfilled olunca
  • Yalnızca then hata verince
  • Her durumda

Açıklama: catch, zincirdeki ilk reddedilen Promise'ten sonra çalışır.

3 Yöntemleri göreviyle eşleştir

Kavram Anlamı
then tamamlanınca çalışır
catch hatayı yakalar
resolve başarıyı bildirir

Başlangıç bölümündeki tüm dersler