Herkes için Javascript serimizin birinci bölümü olan Promise Nedir, Nasıl Kullanılır ? soru başlıklarını temel seviyede inceleyeceğiz.
Javascript bildiğimiz üzere single-thread ve asenkron yapıda çalışan bir programlama dilidir. Verilen script komutlarını yukarıdan aşağı okur. Ancak bazı durumlarda yapacağımız işlem bir çağrının sonucunda diğer komut satırlarının çalışmasını gerektirebiliyor. Bu durumları aşmak için Promise nesnesi tarayıcı derleyicisine tanımlanmıştır.
” Şöyle düşünün elinizde bir fonksiyonunuz var bu fonksiyon içinde bir api’ye istek atıyorsunuz ve gelen cevabı bir değişkene atıyorsunuz bu değişkeni de ekrana yazdırıyorsunuz. JS Runtime sizin ilk fonksiyonunuzu okudu ve api’ye isteği attı ama cevabı beklemeden diğer fonksiyonunuza geçti ve cevabı değişkene yazdırıp ekranda göstermek istedi haliyle ‘expansion is not defined’ hatası alındı. İşte biz bu gibi hataların önüne geçmek için async/await kullanıyoruz. “
Promise Syntax
let myPromise = new Promise(function(myResolve, myReject) {
// "Producing Code" (May take some time)
myResolve(); // başarılı olduğunda
myReject(); // hata durumunda
});
// "Consuming Code" (beklemeli)
myPromise.then(
function(value) { /* code başarılıysa */ },
function(error) { /* code başarısızsa */ }
);
Promise nesnesi 2 parametre alır, 1. parametre başarılı durumlarda , 2.parametre başarısız durumlarda kullanılır.
Promise Nesne Özellikleri
Bir JavaScript Promise nesnesi şunlar olabilir:
- Pending (Askıda)
- Fulfilled (Tamamlanmış)
- Rejected (Reddedilmiş)
Promise nesnesi iki özelliği destekler: state ve result.
Bir Promise nesnesi ” pending (beklemede)” (çalışırken), sonuç tanımsızdır.
Bir Promise nesnesi ” fulfilled (yerine getirildiğinde)”, sonuç bir değerdir.
Bir Promise nesnesi ” rejected (reddedildiğinde)”, sonuç bir hata nesnesidir.
myPromise.state | myPromise.result |
---|---|
“pending” | undefined |
“fulfilled” | a result value |
“rejected” | an error object |
Promise Örnekleri
<!-- index.html -->
<div id="demo">
</div>
// code.js
function myDisplayer(some) {
document.getElementById("demo").innerHTML = some;
}
let myPromise = new Promise(function(myResolve, myReject) {
let x = 0;
if (x == 0) {
myResolve("OK");
} else {
myReject("Error");
}
});
myPromise.then(
function(value) {myDisplayer(value);},
function(error) {myDisplayer(error);}
);
promise then methodu kullanmadan async fonksiyonu aşağıdaki gibi yazabiliriz. Temel kullanımı async , await;
const prom = new Promise((resolve,reject)=>{
setTimeout(()=>{
resolve("Hello world");
},1000)
});
async function beni_oku(){
const response = await prom; // sonucu bekle
console.log(response); // consola yazdır.
}
beni_oku();
Todo List Yapımı
Bu yazımızda javascript promise kullanımını ve sıralı işlemleri nasıl yapabileceğimizi öğrendik. Paylaşmamızı istediğiniz konu başlıklarını suggestion@masterdark.net mail adresinden bizlerle paylaşabilirsiniz.