*256 Bit SSL Sertifikası * Full Mobil Uyumlu * Full SEO Uyumlu
İsterseniz Mobil Uygulama Seçeneğiyle
Javascript’te Promises (“Vaadler” olarak da bilinir) üzerine yazılmış bu yazıda, bu yapıların konseptini, kullanımını, onları yapabilir, özelliklerini ve karar yapısını detaylandırmak istiyorum. Yazı sonunda ise sık sorulan soruları cevaplayarak okuyucuların kafasındaki tüm soruları cevaplamayı amaçlıyorum.
- Promises Nedir?
Javascript’te bir işlem asenkron olduğunda veya bir API verisi gibi dış kaynaklara bağlı olduğunda, işlem tamamlandıkça belirli bir sonuç üretir. Bu sonuçlar, genellikle ‘callback’ fonksiyonları ile alınabilir. Ancak, callback fonksiyonları metin halinde yazıldığında, kodun okunabilirliği azalabilir. Bu nedenle, Promises, daha düzenli ve kolay okunabilen kod mantığına sahip, birbirine bağlı bir dizi işlemleri yönetmek için bir yapıdır.
Bu yapılar, yürütülen işlemin ‘vaadini’ temsil eder. İşlem tamamlandığında (başarılı veya başarısız) yapı, işlem sonucunu verir. Bu nedenle, ‘promise’ adı verilen bu yapı, asenkron işlemlerle çalışırken belirli bir işlem akışını, belirli karar aşamalarına yönlendirmek için kullanılır.
- Promises Kullanımı
Promises, 3 farklı durumda meydana gelebilir:
i. Bekleme (Pending): İşlem henüz tamamlanmadı.
ii. Tamam (Resolved): İşlem tamamlandı ve sonuç başarılı.
iii. Hata (Rejected): İşlem tamamlandı ve sonuç başarısız.
İşlem, başarılı veya başarısız sonuçlarla tamamlandığında, promise’i nesne olarak geri döndürür. Bu nesne çözülür (resolve), ya da reddedilir (reject). Bu nesne üzerinde iki adet method (then, catch) çağrısı yaparak bu durumlara göre işlem akışını yönlendirebiliriz.
- Örnek Kullanım Senaryoları
Promise’leri anlamak için basit bir kullanım örneği aşağıdaki gibidir:
let myPromise = new Promise(function(resolve, reject){
// Yapılacak İşlemler
let operation = 5 + 10;
if(operation % 2 == 0){
resolve(\"işlem tamamlandı ve 15 sonucu başarılı olarak döndürüldü.\");
} else {
reject(\"işlem tamamlandı ancak 15 sonucu başarısız oldu.\");
}
});
myPromise.then(function(result){
console.log(result);
}).catch(function(error){
console.log(error);
});
Bu örnekte:
i. Bir `myPromise` isimli nesne oluşturulur ve işlemler yapılır.
ii. İşlem başarılıysa, (operation toplamı çift olduysa) `resolve` methodu çalıştırılır ve bir mesajla birlikte `myPromise` nesnesi çözüldü (resolved).
iii. İşlem başarısızsa, (operation toplamı tek olduysa) `reject` methodu çalıştırılır ve bir mesajla birlikte `myPromise` nesnesi reddedilir (rejected).
iv. `myPromise` nesnesinin durumu belirli olduğunda, `then` methodu çağırılırken, ilk fonksiyon parametresi solve edilmiş nesnenin alacağı, ikinci fonksiyon parametresi ikinci fonksiyon parametreleri reddedilmiş nesnenin alacağı bir callback fonksiyonunu çağırır.
v. Eğer `catch` methodu çağırılırsa, reddedilen nesnenin hata nedeni yerine ikinci parametreleri alacak bir fonksiyonu çağırır.
- Promisenin Özellikleri
Promisenin özellikleri şunlardır:
i. Vaadi yönetir
ii. Asenkron işlemler olan eylemleri yakalar
iii. Callback cennetinden kurtarır
iv. Kullanımı anlaşılır ve kolaydır
v. Doğal kodlama dili ile çalışır.
- Promisenin Avantajları
Promisenin bazı faydaları şunlardır:
i. Promise yapısı, callback işlemini önceden yönetir ve daha tutarlı, hata ayıklaması yapılabilir şekilde kodlamak için kullanılabilir.
ii. Promise yapısı, işlem için bir değeri taşır, bu sayede işlemin sonucu başarılı veya başarısız olsa bile mevcuttur.
iii. Callback cehenneminden kurtulmanıza yardımcı olur ve sizi callback içinde gel-git yapmak yerine doğrudan bir işlem akışına yönlendirir.
iv. Promiseler, kod hatalarını azaltır ve düzenli bir kod temeli sağlar.
v. Promiselerin kullanım şekilleri çok açık ve basit olduğu için, diğer geliştiricilerin çalışmalarını anlamak ve anlamlandırmak kolaydır.
- Promisenin Dezavantajları
Promisenin bazı dezavantajları şunlardır:
i. Promiseler, fazla sayıda göreli birimler (relative unit) yaratan yığına doğru bir kodlama stiline yol açabilir.
ii. Promise yapılarında clousurelar halinde iletilen bilgiler, maliyetli bir veri taşınırlığı hali olarak gösterilebilir.
iii. Diğer geliştiricilerin işlemlerini yapmak için tüm metodolojileri öğrenmeleri zor olabilir.
- Sık Sorulan Sorular
Q: Promiseler, Callback’den daha mı iyidir?
A: Promiseler, birbirine bağlı işlemlerin yönetimi açısından daha iyi, okunabilir olduğu ve kodun yönetimi daha kolay olduğu için daha iyi olarak düşünülür. Ancak, yapı olarak farklıdır.
Q: Promiseler birden fazla işlemi yönetebilir mi?
A: Evet, birden fazla işlem, birbirine bağlı bir şekilde yönetilebilir.
Q: Promiseler, üçüncü taraf kitaplıklara sahip midir?
A: Evet, bazı popüler üçüncü taraf kitaplıklar arasında Q.js ve Bluebird bulunur.
Q: Promise Nazilir?
A: Promiseler, bazı Javascript motorlarında (özellikle Firefox gibi) varsayılan olarak bulunabilir. Ancak, en son sürüm sayesinde Chrome ve Safari gibi diğer birçok tarayıcıda da kullanılabilirler.
Özetlemek gerekirse, promiseler son derece kullanışlı bir yapıdır. Bunlar, callback direnişinin sonucudur ve kodlamayı daha anlaşılır, tutarlı ve hata ayıklamasına yönelik bir şekilde yönetilebilir hale getirir. Daha fazlasını öğrenmek ve uygulamalar üzerinde denemek için websitelerine bakılabilir.
Javascript’te Promises (“Vaadler” olarak da bilinir) üzerine yazılmış bu yazıda, bu yapıların konseptini, kullanımını, onları yapabilir, özelliklerini ve karar yapısını detaylandırmak istiyorum. Yazı sonunda ise sık sorulan soruları cevaplayarak okuyucuların kafasındaki tüm soruları cevaplamayı amaçlıyorum.
- Promises Nedir?
Javascript’te bir işlem asenkron olduğunda veya bir API verisi gibi dış kaynaklara bağlı olduğunda, işlem tamamlandıkça belirli bir sonuç üretir. Bu sonuçlar, genellikle ‘callback’ fonksiyonları ile alınabilir. Ancak, callback fonksiyonları metin halinde yazıldığında, kodun okunabilirliği azalabilir. Bu nedenle, Promises, daha düzenli ve kolay okunabilen kod mantığına sahip, birbirine bağlı bir dizi işlemleri yönetmek için bir yapıdır.
Bu yapılar, yürütülen işlemin ‘vaadini’ temsil eder. İşlem tamamlandığında (başarılı veya başarısız) yapı, işlem sonucunu verir. Bu nedenle, ‘promise’ adı verilen bu yapı, asenkron işlemlerle çalışırken belirli bir işlem akışını, belirli karar aşamalarına yönlendirmek için kullanılır.
- Promises Kullanımı
Promises, 3 farklı durumda meydana gelebilir:
i. Bekleme (Pending): İşlem henüz tamamlanmadı.
ii. Tamam (Resolved): İşlem tamamlandı ve sonuç başarılı.
iii. Hata (Rejected): İşlem tamamlandı ve sonuç başarısız.
İşlem, başarılı veya başarısız sonuçlarla tamamlandığında, promise’i nesne olarak geri döndürür. Bu nesne çözülür (resolve), ya da reddedilir (reject). Bu nesne üzerinde iki adet method (then, catch) çağrısı yaparak bu durumlara göre işlem akışını yönlendirebiliriz.
- Örnek Kullanım Senaryoları
Promise’leri anlamak için basit bir kullanım örneği aşağıdaki gibidir:
let myPromise = new Promise(function(resolve, reject){
// Yapılacak İşlemler
let operation = 5 + 10;
if(operation % 2 == 0){
resolve(\"işlem tamamlandı ve 15 sonucu başarılı olarak döndürüldü.\");
} else {
reject(\"işlem tamamlandı ancak 15 sonucu başarısız oldu.\");
}
});
myPromise.then(function(result){
console.log(result);
}).catch(function(error){
console.log(error);
});
Bu örnekte:
i. Bir `myPromise` isimli nesne oluşturulur ve işlemler yapılır.
ii. İşlem başarılıysa, (operation toplamı çift olduysa) `resolve` methodu çalıştırılır ve bir mesajla birlikte `myPromise` nesnesi çözüldü (resolved).
iii. İşlem başarısızsa, (operation toplamı tek olduysa) `reject` methodu çalıştırılır ve bir mesajla birlikte `myPromise` nesnesi reddedilir (rejected).
iv. `myPromise` nesnesinin durumu belirli olduğunda, `then` methodu çağırılırken, ilk fonksiyon parametresi solve edilmiş nesnenin alacağı, ikinci fonksiyon parametresi ikinci fonksiyon parametreleri reddedilmiş nesnenin alacağı bir callback fonksiyonunu çağırır.
v. Eğer `catch` methodu çağırılırsa, reddedilen nesnenin hata nedeni yerine ikinci parametreleri alacak bir fonksiyonu çağırır.
- Promisenin Özellikleri
Promisenin özellikleri şunlardır:
i. Vaadi yönetir
ii. Asenkron işlemler olan eylemleri yakalar
iii. Callback cennetinden kurtarır
iv. Kullanımı anlaşılır ve kolaydır
v. Doğal kodlama dili ile çalışır.
- Promisenin Avantajları
Promisenin bazı faydaları şunlardır:
i. Promise yapısı, callback işlemini önceden yönetir ve daha tutarlı, hata ayıklaması yapılabilir şekilde kodlamak için kullanılabilir.
ii. Promise yapısı, işlem için bir değeri taşır, bu sayede işlemin sonucu başarılı veya başarısız olsa bile mevcuttur.
iii. Callback cehenneminden kurtulmanıza yardımcı olur ve sizi callback içinde gel-git yapmak yerine doğrudan bir işlem akışına yönlendirir.
iv. Promiseler, kod hatalarını azaltır ve düzenli bir kod temeli sağlar.
v. Promiselerin kullanım şekilleri çok açık ve basit olduğu için, diğer geliştiricilerin çalışmalarını anlamak ve anlamlandırmak kolaydır.
- Promisenin Dezavantajları
Promisenin bazı dezavantajları şunlardır:
i. Promiseler, fazla sayıda göreli birimler (relative unit) yaratan yığına doğru bir kodlama stiline yol açabilir.
ii. Promise yapılarında clousurelar halinde iletilen bilgiler, maliyetli bir veri taşınırlığı hali olarak gösterilebilir.
iii. Diğer geliştiricilerin işlemlerini yapmak için tüm metodolojileri öğrenmeleri zor olabilir.
- Sık Sorulan Sorular
Q: Promiseler, Callback’den daha mı iyidir?
A: Promiseler, birbirine bağlı işlemlerin yönetimi açısından daha iyi, okunabilir olduğu ve kodun yönetimi daha kolay olduğu için daha iyi olarak düşünülür. Ancak, yapı olarak farklıdır.
Q: Promiseler birden fazla işlemi yönetebilir mi?
A: Evet, birden fazla işlem, birbirine bağlı bir şekilde yönetilebilir.
Q: Promiseler, üçüncü taraf kitaplıklara sahip midir?
A: Evet, bazı popüler üçüncü taraf kitaplıklar arasında Q.js ve Bluebird bulunur.
Q: Promise Nazilir?
A: Promiseler, bazı Javascript motorlarında (özellikle Firefox gibi) varsayılan olarak bulunabilir. Ancak, en son sürüm sayesinde Chrome ve Safari gibi diğer birçok tarayıcıda da kullanılabilirler.
Özetlemek gerekirse, promiseler son derece kullanışlı bir yapıdır. Bunlar, callback direnişinin sonucudur ve kodlamayı daha anlaşılır, tutarlı ve hata ayıklamasına yönelik bir şekilde yönetilebilir hale getirir. Daha fazlasını öğrenmek ve uygulamalar üzerinde denemek için websitelerine bakılabilir.
*256 Bit SSL Sertifikası * Full Mobil Uyumlu * Full SEO Uyumlu
İsterseniz Mobil Uygulama Seçeneğiyle