JavaScript Promise API Nedir? Nasıl ve Neden Kullanılır?

Promise JavaScript’in belkide en güçlü API’lerinden biridir. Async işlemlerde size yönetim olanağı tanır.

Promise, Türkçe karşılığı bildiğiniz gibi ekmek musaf çarpsın demektir. Yani bir nevi async işlemlerde JavaScript’in ben bu işlemi yaptıktan sonra “yemin ederim sana işlem sonucunu döndüreceğim” demesi anlamını taşımaktadır.

Örnek bir promise yapısı

Promise temelde 2 yapıyı temsil eder. Resolve ve Reject bunlar işlemin oluşturulma noktasına geri döneceği zaman karar verilmesini sağlayan callback methodlarıdır.

Yukarıdaki örneği incelediğimizde bir promise içerisine yapılan işlemin doğru yada yanlış girmesine göre karar verip resolve veya reject olarak işlemi geri döndürebiliyoruz. Diyelim ki yukarıdaki örnekte do_something_in_here methodu bir sunucudan bir dosya indiriyor olsun, biz indirdiği dosyanın boyutunu da ne zaman ineceğini de bilmiyoruz. Hatta indirebilecek miyiz onu da bilmiyoruz. Ama programımıza bir promise veriyoruz, “Az diğer mahallenin sunucusuna gitmem lazım sen takıl ben 2dk ya sendeyim”

Promise resolve işlemi then ile reject işlemi ise catch ile kotarılıyor. Yine yukarıdaki örneğe baktığımızda eğer promise içerisindeki işlem başarılı biterse resolve çağrılacak ve oradan da alt kısımda yer alan then bloğu çalışacaktır. Eğer işlem reject olarak çağırılırsa catch bloğundan işlem devam edecektir.

Promise Pipeline (Tren yapıyoruz)

Promiselerin en güzel tarafından biri de birbirleri için proxy görevi görüyor olmalıdır. Yani siz bir promise’yi diğerine bir öbürünü sonrakine kalanı bahçıvan’a ekleyebilirsiniz.

Temelde bir promise 3 durumu belirtir
- pending: ne başarılı ne hatalı beklemede anlamında
- fulfilled: başarılı bir şekilde işlemini tamamlamış
- rejected: her ne yapıyorsa eline yüzüne bulaştırmış

Basitce Promise Pipeline

Promise.All

Promise’nin belkide en çok sevdiğim “Grup Sex” methodudur. Bir grup promise’yi bu methoda verdiğinize size tek bir then ve catch yapısında hepsini yönetmenizi sağlar.

Promise All methodu

Promise.Race

Promise.all da olduğu gibi race de birden fazla promise’yi array olarak kabul eder ve içlerinden hangisi en önce biterse onun then yada catch’ini çalıştırır. Yani aralarında bir yarış yaptırır.

Promice Race methodu

Not: Bu yazıyı devam ettireceğim o yüzden bir yerlere bookmarklamayı unutmayın.

Neşeli kodlamalar