Async JS'ye dair kısa bir pratik uygulaması geliştiriyorum. Mantık şu:
Müşteri restorana girerken bir isim, şifre ve sipariş adı veriyor.
Daha sonra siparisVer metodu ile bu siparis veriliyor.
En sonda ise sipariş detayları gösteriliyor. ID, müşteri ismi vs.
Kod aşağıda:
// RESTORAN ÖRNEĞİ
let restoranDurumu = true;
let restoranaGir = (firstName, password, order) => {
return new Promise((resolve, reject) => {
setTimeout(() => {
if(restoranDurumu) {
resolve( {customerName: firstName, orderName: order} );
} else {
reject("Restoran kapalı");
}
}, 2000);
});
}
let siparisVer = (customerName, orderName) => {
return new Promise((resolve, reject) => {
let siparisNo = Math.random() * 11;
setTimeout(() => {
resolve("Sayın " + customerName + ", bir adet " + orderName + " isimli siparişiniz hazırlandı.");
}, 2000);
});
}
let siparisDetaylari = (siparisNo) => {
return Promise((resolve, reject) => {
setTimeout(() => {
resolve(
`Customer Name: ${customerName}`
`Order ID: ${siparisNo}`
`Order Name: ${orderName}`
);
}, 2000);
});
}
restoranaGir("Alperen", 12345, "Büyük Boy Pizza")
.then((customerName, orderName) => {
console.log("Restorana Girildi");
console.log(customerName);
return siparisVer(customerName, orderName);
}).then(order => {
console.log(order);
return siparisDetaylari(siparisNo);
}).then(details => {
console.log(details);
});Aldığım hatalar şunlar:1. siparisVer metodu çalıştığı zaman resolve içinde ki değişkenlere ulaşılamıyor.
2. siparisVer metodu içinde oluşturulan siparisNo değişkenini, siparisDetaylari isimli metoda aktaramadım. Promise yapısı içerisinde bu sorun daha net anlaşılır.
Teşekkürler.