CodeBlanks Logo Icon CodeBlanks

finally

.finally ile temizlik öğrenirsin.

finally nedir?

finally, Promise zincirine eklenen ve fulfilled ya da rejected fark etmeksizin her durumda çalışan bir yöntemdir. Genellikle kaynak temizliği için kullanılır: dosyayı kapatmak, yükleniyor göstergesini gizlemek ya da bağlantıyı bırakmak gibi.

p
  .then(deger => console.log(deger))
  .catch(hata => console.error(hata))
  .finally(() => console.log("bitti"));

Önemli: finally'in işlevi parametre almaz ve döndürdüğü değer bir önceki Promise'in sonuçunu değiştirmez. Hata yakalandıktan sonra bile finally çalışır; ama finally içinde yeni bir hata fırlatırsan zincir yine reddedilir.

Uygulama Sıra sende: finally ile temizlik

Promise.resolve("tamam") ile bir Promise oluştur. .then(value => console.log(value)) ile sonuçu yazdır. .catch(err => console.error(err)) ile hatayı yakala. .finally(() => console.log("temizlik")) ile son mesajı yazdır.

Başlangıç kodu

index.js
// Promise.resolve ile başla
// .then, .catch ve .finally ekle

Örnek çözüm

index.js
Promise.resolve("tamam")
  .then(value => console.log(value))
  .catch(err => console.error(err))
  .finally(() => console.log("temizlik"));

Beklenen çıktı

tamam
temizlik

finally değeri değiştirmez

finally, önceki Promise'in sonuçunu değiştirmez; yalnızca yan etki yapmak için kullanılır. then ya da catch gibi bir parametre almaz. finally'den dönen değer, bir sonraki then'e aktarılmaz; zincir özgün değerle devam eder.

Promise.resolve(1)
  .finally(() => 2)
  .then(v => console.log(v)); // 1

Burada finally 2 döndürse bile then 1 alır. finally içinde fırlatılan hata ya da reddedilen Promise ise zinciri reddeder; temizlik sırasında hata oluşturmamaya dikkat et.

Soru ve cevaplar

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

1 Boşluğu doldur: finally ekle

Soru
p
  .then(value => console.log(value))
  .____(() => console.log("bitti"));
Cevap
p
  .then(value => console.log(value))
  .finally(() => console.log("bitti"));

Açıklama: finally her durumda çalışır.

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

  • Yalnızca fulfilled olunca
  • Yalnızca rejected olunca
  • Her iki durumda da Doğru cevap
  • Yalnızca hata fırlatılınca

Açıklama: finally sonuç ne olursa olsun çalışır.

3 finally özellikleri

Kavram Anlamı
finally her durumda çalışır
parametre almaz
değer değiştirmez

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