Javascript’te Promise Kullanımı

Promise tanımı ES6 ile Javascript dünyasına girdi, aslında daha önce bazı kütüphaneler ile kullanılabiliyordu artık bağımsız olarak kullanılabilir oldu. Javascript’in en meşhur özelliklerinden olan asenkron çalışma yapısına çok uygundur. Bir işlemin o an bitmesini beklemeden başarılı ya da başarısız bir sonuç için girilen fonksiyonları sonuca bağlamamızı sağlar.

Event‘ler ile de yapabiliyorduk aslında bu tarz bloklama yapmaması gereken işlemleri. Ama bir event’i dinlemeye başlamadan olup geçmesi ihtimali gibi bazı kullanışsız tarafları vardı. Aşağıdaki örnekte load event’i için biz tanımlama yapana kadar görsel yüklenmiş ve event tetiklenmiş olabilir. Bu event yapısındaki kodumuzun çalışmamasına sebep olacaktır fakat promise yapısında olay gerçekleşmiş olsa bile doğru fonksiyonumuz promise tarafından çalıştırılacaktır. Ayrıca bazı durumlarda bir işlem için bir kaç event tetiklenebilirken Promise’de durum böyle değildir ya başarılı ya da başarısız fonksiyonları çalıştırılır.

Bu yapısıyla, işlemin ne zaman gerçekleştiğinden bağımsız bir kod yazarak, daha önce bahsettiğim asenkron çalışma mantığına tam uyum sağlamış oluyoruz.

Promise.prototype.then()

Bir promise nesnesine ait bu metot ile başarılı ve başarısız sonuçlar için fonksiyonlar tanımlayarak işlem sonucunu kullanabiliriz. Yukarıdaki örneğimizde kullanımını görebiliyoruz.

Promise.prototype.catch()

Bu metot ile de sadece başarısız dönüşler için fonksiyon tanımlayabiliriz. catch ve then metotları promise nesnesini döndürdükleri için birbirlerine bağlanarak(chain) kullanılabilir, bunun detaylarına aşağıda değineceğim. Then ve Catch metodlarını bir kaç kez de kullanabiliriz.

Promise Oluşturma

Promise sınıfına parametre olarak 2 parametreli bir fonksiyon verilerek oluşturulur. Cümle zor oldu örnek yapalım iyisi mi.

Çok basit bir Promise nesnesi oluşturduk. sayi adında bir değişken tanımlayıp buna bağlı olarak başarılı(resolve) ya da başarısı(reject) fonksiyonlarını parametre olarak verdik.

Zincirleme Then Kullanımı

Az önce de kısaca bahsettiğim gibi then metodunu art arda kullanabiliriz. Burada dikkat edilmesi gereken kullanışlı bir özellik var. Then metoduna tanımladığımız fonksiyonun return değeri bir sonraki then için parametre olmuş oluyor. Şöyle ki;

Kaynaklar;
https://developers.google.com/web/fundamentals/primers/promises
https://developer.mozilla.org/tr/docs/Web/JavaScript/Reference/Global_Objects/Promise
http://es6-features.org/#PromiseUsage

Bir Cevap Yazın