#9 Promise Kavramı

Türkçe kelime anlamı “söz vermek” olan Promise nesnesi adından da anlaşılacağı üzere bir işlemin henüz tanımlanmadığını ama sonradan tanımlanmabileciğini belirten, asenkron işlemleri sıraya almada sıkça kullanılan bir nesnedir.

  • Promise’ler new anahtar kelimesi ile oluşturulur. İstenildiği durumlarda bir değişkene de atanabilir.
  • Parametre olarak resolve ve reject adında iki adet parametre değerine sahip bir fonksiyon içerir.
  • resolve() promise başarılı bir şekilde tamamlandığı zaman, rejectt ise promise reddedildiğinde, başarısız olma durumunda çağırılır.
  • Promise başarılı olması durumunda resolve() ile döndürülen değerler then() fonksiyonu ile, başarısız olması durumunda reject() ile döndürülen değerler ise catch() fonksiyonu ile yakalanır.

Örnek kullanım:

1
2
3
4
5
6
7
8
9
10
11
12
const isTrue = true;

new Promise((resolve, reject)=>{
if (isTrue) {
resolve("İşlem başarılı");
}else {
reject("İşlem BAŞARISIZ!")
}
}).then((data)=>console.log(data))
.catch((err)=>console.log(err))

//Console: İşlem başarılı

Bu örneğimizde isTrue değişkenine bağlı olarak bir promise nesnesi oluşturduk ve isTrue değişkeni true değerine sahipse, resolve() fonksiyonu ile “İşlem başarılı” şeklinde bir mesaj gönderdik. Aksi taktirde de reject() ile aynı mesajın olumsuzunu yolladık. Bu durumda isTrue değişkeni true değerine sahip olduğu için resolve gönderilecek ve then içerisinde ilgili mesaj yakalanarak yazdırılacaktır.

Eğer isTrue değişkenimizi false yaparsak bu sefer reject parametresi gönderilecek ve bu sefer then fonksiyonunu atlayarak catch içerinde yakalanacaktır.

  • Promise yapısı ile asenkron işlemleri zincirleme mantığı ile sıralabiliriz. Bunun için arka arkaya sıralanan .then() yapıları kullanılır.
  • then bloğu içerisinde return ettiğimiz değerler bir sonraki then bloğuna gönderilir.

Örnek kullanım:

1
2
3
4
5
6
7
8
9
10
11
12
13
new Promise((resolve, reject)=>{
resolve(2);
reject("Geçersiz değer.")
}).then((val)=> {
return val*val})
.then((val2)=>{
return val2*val2;
})
.then((val3)=>{
console.log(val3)
});

// Console: 16

  • Promise nesneleri bir değişkene atanıp, o değişken üzerinden de kullanılabilir. Aynı örneği bir daha inceleyelim.

1
2
3
4
5
6
7
8
9
10
11
12
13
const kareAl = new Promise((resolve, reject)=>{
resolve(2);
reject("Geçersiz değer.")
});

kareAl.then((val)=> {
return val*val})
.then((val2)=>{
return val2*val2;
})
.then((val3)=>{
console.log(val3)
}).catch((err)=>{console.log(err)});

Spring Framework - IoC ve DI Kavramları #4 Destructuring Kavramı

Comments

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×