Javascript Promise Oluşturma ve Kullanma

Javascript Promise Oluşturma ve Kullanma

Hepinize merhaba dostlarım :). Bu yazımda sizlere javascript programlama dilinde özellikle modül geliştirdiğimiz zamanlarda sıklıkla kullanılan ve kullanımı da bir hayli basit olan yapıdan yani promise den bahsedeceğim :). İlk defa duymuş olanlarınız vardır ben çok ufak bir şekilde mantığı anlatayım diyorum. Mantık tamamen şundan ibaret dostlarım: Callback fonksiyonlarda biz sonucu callback olarak geriye gönderiyorduk ya işte bu promise yapısında ise gelen sonucu reject ve resolve olarak geriye bastırıyoruz :). Olayın mantığı tamamen budur :). Artık mantığını anladığınıza göre gelin bu promise yapısının tam anlamıyla ne olduğuna, neden kullanıldığına bir göz atalım derim :)

Promise Nedir ve Neden Kullanılır ?

Dostlarım yukarıda da bahsettiğim gibi promise yapısı genelde callback yapısının mantığı türünde çalışan, işlem eğer başarılı ise şunu yap, başarılı değilse bunu yap gibi belirttiğimiz işlemlerde kullanıllan bir yapıdır. Normalde bu işlem callback fonksiyonlarda da yapılır lakin callback fonksiyon içerisinde (callback fonksiyonlar yazımı okumayan dostlarım buradan ulaşabilirler) ekstra if else sorgusu yazmaktansa promise kullanmak çok ama çok avantajlı olacaktır. Neden diye soracak olursanız dostlarım size şunu anlatayım. Biz callback fonksiyonlar içerisine gönderdiğimiz bir değer geri döndüğünde mesela bunun içinin dolu olup olmadığına bir karar vermek için örnek veriyorum bir if else yapısı yazıyoruz yani diyoruz ki "Bu içerik dolu mu boş mu ?" veya "Bu işlemlerde bir hata var mı yok mu ?". Bu sorguları if else ile yapmak yerine promise kullanıp olumlu ise belirli bir blok çalışsın (then kısmı), olumsuz ise başka bir blok çalışsın (catch kısmı) diye ayarlayabiliyoruz :).

Şimdi aklınızda bir soru vardır ve benim görevim ise bu soruyu elimden geldiğince cevaplamaktır :). Şimdi diyorsunuz ki

Hocam iyi güzel anlattınız da promise yapısını nerede kullanacağız ?

Çok güzel bir soru sordunuz dostlarım. Promise yapısı özellikle büyük projeler geliştirirken karşımıza çıkan, modül yapıları yazdığımızda herhangi bir yapının başarıyla gerçekleşip gerçekleşmediğini, işlem sonuçlarına göre (başarılı veya başarısız ise) belirli komutları yazmamıza olanak sağlayan bir yapıdır. Artık sabırsızlandığınızı anlııyorum :). O halde kemerlerinizi bağlayın uçuşa geçiyoruz :)

Promise Yapımızı Oluşturalım

Evet dostlarım artık yavaştan yavaştan promise yapımızı oluuşturmakla başlıyoruz :). Biliyorum çok heyecanlısınız özellikle promise kavramına yeni başlayacak olan dostlarımın heyecanını aşırı derecede seziyorum :). O halde sözü daha fazla uzatmadan yavaştan kodlamaya geçelim diyorum. Uygulamamızın yani yapacağımız işlem dostlarım bir login işlemi yapmamız için gerekli olan fonksiyonumuz olacak (promise yapımız). Bilgiler doğru ise resolve yapısına, değilse de reject yapısına düşmesini sağlayacaktır :). O halde hızlıca kodlama kısmına geçelim derim

Yapacağımız uygulamada kullanıcı adımız mfsoftware olsun, şifremiz ise 123 olsun varsayalım. Bu bilgilerin doğruluğuna göre bize mesaj verdirme işlemini sağlayan bir promise yazalım

function login(username,password){
  return new Promise(function(resolve,reject){
    if(username=="mfsoftware" && password==123){
      resolve("Hoşgeldin Blogger");  // bilgiler doğru ise resolve uyarısı ver dedik
    }else{
      reject("Kullanıcı adı ve/veya şifreniz hatalı");  // bilgiler yanlış ise reject uyarısı ver dedik
    }
  })
}

şeklinde promise yapımızı yazmış bulunmaktayız dostlarım :). Burada mantık tamamen şöyle işliyor: Kullanıcı tarafından gelen veriler bizim verilerimiz ile eşleştiğinde promise den geriye dönecek cevap resolve yani diyor ki "Kardeşim işlemler başarılı bir şekilde gerçekleşti :) Yoluna devam edebilirsin". Ama eğer verilerimiz bizim belirlediğimiz süzme işleminden geçerken hata olmuşsa yani eşleşmemişse bize deniyor ki "Kardeşim verilerin doğrulanamadı haberin olsun :)". Şeklinde bize bir mesaj veriyor dostlarım :). Şimdi ana yapımızı yazdığımıza göre bu fonksiyonu yani promise olarak tanımladığımız fonksiyonu nasıl kullanabiliriz gelin ona bakalım :)

login("mfsoftware",123).then(function(response){
  alert(response);  // spnuç resolve ise burası çalışacak
},function(response){
  alert(response);  // sonuç reject ise burası çalışacak
})

şeklinde kodumuzu yazdık. Burada dikkat etmişseniz diğer fonksiyonlardaki gibi direkt fonksiyon adını yazıp ve içerisine değerlerimizi gönderip çağırma işlemini yapmadık dostlarım. Fonksiyonumuz bir promise yapıda olduğu için işlemin sonucunu then methodunun içine aktarıp eğer sonuç resolve ise birinci fonksiyon çalışsın, değilse de reject fonksiyonu çalışsın diye programa belirttik :). Şimdi bu şekilde yani kullanıcı adımızı mfsoftware ve şifremizi de 123 olarak gönderdik diyelim. Bu veriler login() fonksiyonuna gidecek ve bizim belirlediğimiz kurallara uygun ise resolve() yapısı geri dönecek, değilse de reject() yapısı geri dönecek :). Bu fonksiyonu çalıştırdığımızda ekranımıza çıkan sonuç

Hoşgeldin Blogger

şeklinde olacaktır. Peki ya verileri yanlış girecek olursak mesela çağırdığımız login fonksiyonu aşağıdaki gibi olsa varsayalım

login("mfsoftware").then(function(response){
  alert(response);  // resolve olarak geliyorsa sonuç burası çalışacak
},function(response){
  alert(response);  // reject olarak geliyorsa sonuç burası çalışacak
})

şeklinde verileri gönderelim ama şifreyi göndermeyelim dostlarım. Burada ise karşımıza gelen sonuç reject olarak dönecektir. Yani bize diyor ki "Kardeşim gelen veriler senin kurallarına uymuyor :)" şeklinde bir uyarı veriyor ve sonuç reject kısmına düşüyor :). Ekranımıza çıkacak olan sonuç ise

Kullanıcı adı ve/veya şifreniz hatalı

şeklinde bir sonuç ekrana basılıyor :). İşlemler bu kadar basit dostlarım :).


Evet dostlarım :). Bu yazımda promise nedir, hangi durumlarda kullanılır, nasıl tanımlanır, nasıl çağrılır dilim döndüğünce bahsettim. Umarım faydalı olmuşumdur. Eksik veya hatalı bir anlatım yapmış isem benimle iletişime geçmekten çekinmeyin :). Başlarda biraz karmaşık veya zor gelebilir anlıyorum. Ben de ilk zamanlar zorlanmıştım bu konuda. Bu aşamada yapmanız gereken teş şey dostlarım her yazımın altında da değindiğim gibi "İstikrarlı ve Azimli Olmalısınız, Bolca pratik yapmalısınız :)". Bu dediklerimi hayat felsefeniz yaptığınız sürece başarı sizler için kaçınılmaz olacaktır dostlarım :).

Hayallerinizi gerçekleştirmeniz ve güzel yerlere gelmeniz dileklerimle... İyi çalışmalar dilerim :)

Muhammed Fatih BAĞCIVAN
Yazar Hakkında

Kendi Halinde Bir Backend Developer

Önceki YazıLaravel Nedir ?
Sonraki YazıNode.js Request Kullanımı
Yorumlar (0)
Bu Yazıya Ait Hiçbir Yorum Bulunamadı (veya admin onaylamadı). İlk Yorum Yapan Sen Ol
Yorum Yapabilirsiniz