Quick actions

cmd+k|ctrl+k

Navigation

Languages

Chaining Promise using async/await 2

Snippet info

Language

JavaScript

Visibility

public

Author

tulangrusuk.ku

Created

2020-08-11T00:03:14Z

Updated

2020-08-11T00:03:14Z

const state = {
  isCoffeeMakerReady: 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 makeCoffee = seeds => {
  return new Promise((resolve, reject) => {
    if(state.isCoffeeMakerReady) {
      resolve("Kopi berhasil dibuat!")
    } else {
      reject("Maaf mesin tidak dapat digunakan!");
    }
  })
}

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

async function reserveACoffee(type, miligrams) {
  try {
   const seeds = await getSeeds(type, miligrams);
   const coffee = await makeCoffee(seeds);
   const result = await servingToTable(coffee);
   console.log(result);
  } catch(rejectionReason) {
    console.log(rejectionReason);
  }
}

/* Silakan ubah tipe kopi dan kuantitasnya, untuk mendapatkan promise rejection*/
reserveACoffee("arabica", 300);
reserveACoffee("liberica", 80);
INFO