Quick actions

cmd+k|ctrl+k

Navigation

Languages

Chaining Promise

Snippet info

Language

JavaScript

Visibility

public

Author

tulangrusuk.ku

Created

2020-08-06T08:33:45Z

Updated

2020-08-06T15:12:15Z

/* Dengan promise kita dapat melakukan proses asynchronous operation 
secara berantai. Contohnya, Ketika kita memesan kopi robusta, 
maka tahapan yang dilalui oleh barista adalah memastikan biji kopi tersedia, 
membuat kopi, lalu menghidangkannya kepada pelanggan. 
Tahapan tersebut harus barista lakukan secara berurutan. 

Contoh penerapannya:
*/
const state = {
    isCofeeMakerReady: true,
    seedStocks: {
        arabica: 250,
        robusta: 60,
        liberica: 80
    }
}

const getSeeds = (type, miligrams) => {
    return new Promise((resolve, reject) => {
        if(state.seedStocks[type] >= miligrams) {
            state.seedStocks[type] -= miligrams;
            resolve("Biji kopi didapatkan!")
        }else{
            reject("Maaf stock kopi habis!")
        }
    });
}

const makeCofee = seeds =>{
    return new Promise((resolve, reject) =>{
        if(state.isCofeeMakerReady){
            resolve("kopi Berhasil dibuat")
        } else {
            reject("Maaf mesin kopi sedang tidak dapat digunakan")
        }
    })
}

const servingToTable = cofee => {
    return new Promise(resolve => {
        resolve("Pesanan kopi sudah selesai!")
    })
}

function reserveACofee(type, miligrams){
    getSeeds(type, miligrams)
    .then(makeCofee)
    .then(servingToTable)
    .then(resolvedValue => {
        console.log(resolvedValue);
    })
    .catch(rejectedReason => {
        console.log(rejectedReason);
    })
}



reserveACofee("liberica", 80);
INFO