Sebenernya mah ya, javascript itu mengeksekusi program dengan berurutan. Syncrhonous sebenernya mah. Tapi atuh apa ini teh kok ada Asynchrhonous? Apa itu teh atuh boy?

Gampangnya

Syncrhonous itu berurutan.

Asyncrhonous itu bisa tidak berurutan.

Masih gampang

Syncrhonous teh proses eksekusi kode program secara berurutan. Kode paling depan dulu yang dieksekusi.

console.log("Kau memohon untuk di gendong");
console.log("Latihan minta dicolok kalong");

function pusing() {
  console.log("Pusing boy hidup ini");
  console.log("Kujitak engkau waktu berjalan");
}

function oh() {
  console.log("Oh kusering jual bakmi");
  console.log("Bakmi goreng di Paris");
}

pusing();
oh();

// BEGINI HASILNYA:

// Kau memohon untuk di gendong
// Latihan minta dicolok kalong
// Pusing boy hidup ini
// Kujitak engkau waktu berjalan
// Oooh kusering jual bakmi
// Bakmi goreng di Paris

Asyncrhonous teh proses eksekusi kode program yang sepertinya tidak berurutan karena ada hal yang bikin itu tidak terlihat berurutan. Gimana ya, si anying teh. Gini-gini…

setTimeout(function () {
  console.log("Kau memohon untuk di gendong");
  console.log("Latihan minta dicolok kalong");
}, 1000);

function pusing() {
  console.log("Pusing boy hidup ini");
  console.log("Kujitak engkau waktu berjalan");
}

function oh() {
  console.log("Oh kusering jual bakmi");
  console.log("Bakmi goreng di Paris");
}

pusing();
oh();

// BEGINI HASILNYA:

// Pusing boy hidup ini
// Kujitak engkau waktu berjalan
// Oooh kusering jual bakmi
// Bakmi goreng di Paris
// Kau memohon untuk di gendong
// Latihan minta dicolok kalong

Tuh kan beda kan hasilnya, itu dua baris pertama jadi disimpen di akhir. Itu karena ada method setTimeout yang bikin kode yang dibungkusnya jadi dieksekusi sesuai dengan waktu yang telah ditentukan. Saya set waktu eksekusinya 1000 milidetik, makanya itu dua baris teratas jadinya paling bawah karena nunggu waktu time out dulu.

Kebingungan

Tapi sebenernya mah sinkron ya baca kodenya mah. Asinkron pas eksekusinya. Iya dong? Soalnya kan itu mah cuman suruh nunggu doang (1000 milidetik, misalnya).