/* Kita dapat menuliskan asynchronous process layaknya synchronous process
dengan bantuan keyword async dan await. */
//Fungsi getCoffee() yang dibangun menggunakan promise.
const getCofee = () => {
return new Promise((resolve, reject) => {
const seeds = 100;
setTimeout(() => {
if(seeds >= 190) {
resolve("Cofee didapatkan!");
} else {
reject("Biji kopi habis!")
}
}, 1000)
})
}
//Dengan async/await, kita dapat menggunakan promise dengan cara seperti ini:
async function makeCofee(){
const cofee = await getCofee();
console.log(cofee);
}
makeCofee();
/* Keyword async : digunakan untuk memberitahu JavaScript untuk menjalankan fungsi
makeCoffee() secara asynchronous.
Lalu keyword await : digunakan untuk menghentikan proses pembacaan kode
selanjutnya sampai fungsi getCoffee() mengembalikan nilai promise resolve. */
/*Handle onRejected using async/await
await hanya akan mengembalikan nilai jika promise
berhasil dilakukan (onFulfilled)
Ketika menggunakan async/await, biasakan ketika mendapatkan resolved value
dari sebuah promise, untuk menempatkannya di dalam block try
seperti ini: */
async function membuatKopi() {
try{
const cofee = await getCofee();
console.log(cofee);
} catch(rejectedReason){
console.log(rejectedReason);
}
}
membuatKopi();