Quick actions

cmd+k|ctrl+k

Navigation

Languages

Asyncronus

Snippet info

Language

JavaScript

Visibility

public

Author

ubaidillah.hf

Created

2020-05-13T11:59:27Z

Updated

2020-05-13T11:59:27Z

function gatheringIngredients(rawIngridient, callback) {
  console.log("Menyiapkan bahan ....");
  setTimeout(function() {
    if(rawIngridient) {
      const ingridient = `Bahan ${rawIngridient} sudah siap!`;
      callback(ingridient);
    }
  }, 1000)
}

function makeTheDough(ingridient, callback) {
  console.log("Membuat adonan ...." );
  setTimeout(function() {
    if(ingridient) {
      const dough = "Adonan Selesai!"
      callback(dough);
    }
  }, 2000)
}

function pourDough(dough, callback) {
  console.log("Menyiapkan adonan ke cetakan .....")
  setTimeout(function() {
    const pouredDough = "Cetakan Adonan Selesai!";
    callback(pouredDough);
  }, 1000)
}

function bakeACake(pouredDough, callback) {
  console.log("Memanggang kue ....");
  setTimeout(function() {
    const cake = "Kue sudah siap!";
    callback(cake);
  }, 3000)
}

/* callback hell terjadi di sini! */
function makeACake(...rawIngredients) {
  gatheringIngredients(rawIngredients, function(ingridients) {
    makeTheDough(ingridients, function(dough) {
      pourDough(dough, function(pouredDough) {
        bakeACake(pouredDough, function(cake) {
          console.log(cake);
        });
      });
    });
  });
}

makeACake("Sugar", "Milk", "Butter");

/* output:
Menyiapkan bahan ....
Membuat adonan ....
Menyiapkan adonan ke cetakan .....
Memanggang kue ....
Kue sudah siap!
*/
INFO