Jika Anda baru mengenal bahasa pemrograman javascript, tentu Anda akan sering menemukan kode yang dijalankan secara sinkron atau asinkron. Oke, kali ini kita sebut saja dua istilah sync untuk sinkron dan async untuk asinkron
Proses
Secara default, javascript diproses baris demi baris, artinya setiap baris kode tidak akan dieksekusi sebelum baris kode sebelumnya selesai diproses. Semua proses akan diakomodasi dan dikenal dengan istilah call stack
Sinkronis
Sinkron (sync_), adalah mode default dalam proses eksekusi perintah kode. Perhatikan baris kode berikut
function tanyaKabar(name) { console.log('Apa kabar,', name); } function katakanHallo(name) { console.log('Hallo,', name); } katakanHallo('Guntur'); tanyaKabar('Gun');
Jika kode diatas kita eksekusi, maka layar console di browser anda akan muncul seperti gambar berikut
Segalanya tampak berjalan dengan baik, tidak ada yang aneh dan baik-baik saja. Ha ha ha
Asinkron
Jika pada sync kode diproses baris demi baris, maka pada async kode diproses baris demi baris juga. Hah. , artinya, lalu apa bedanya?
Dalam skenarionya sebenarnya kode async sudah diproses, hanya sebatas penjadwalan untuk dieksekusi pada tahap selanjutnya. Artinya, kode yang berperilaku async tidak akan segera dieksekusi, tetapi di function tanyaKabar(name) {
console.log('Apa kabar,', name);
}
function katakanHallo(name) {
setImmediate(function () {
console.log('Hallo,', name);
});
}
katakanHallo('Guntur');
tanyaKabar('Gun');
1 dan akan mengeksekusi baris perintah berikutnya
function tanyaKabar(name) { console.log('Apa kabar,', name); } function katakanHallo(name) { setImmediate(function () { console.log('Hallo,', name); }); } katakanHallo('Guntur'); tanyaKabar('Gun'); _
Mari kita jalankan kode di atas dan amati hasilnya
Ada perbedaan dalam urutan proses eksekusi. Fungsi function tanyaKabar(name) { console.log('Apa kabar,', name); } function katakanHallo(name) { setImmediate(function () { console.log('Hallo,', name); }); } katakanHallo('Guntur'); tanyaKabar('Gun'); _2 tidak langsung dieksekusi, karena aplikasinya menggunakan function tanyaKabar(name) { console.log('Apa kabar,', name); } function katakanHallo(name) { setImmediate(function () { console.log('Hallo,', name); }); } katakanHallo('Guntur'); tanyaKabar('Gun'); 3 di badan fungsi function tanyaKabar(name) { console.log('Apa kabar,', name); } function katakanHallo(name) { setImmediate(function () { console.log('Hallo,', name); }); } katakanHallo('Guntur'); tanyaKabar('Gun'); 4
Kapan Menggunakan Async?
Penggunaan async_ sangat berguna saat melakukan operasi yang tidak harus menunggu proses lain. Misalnya, memanipulasi function tanyaKabar(name) { console.log('Apa kabar,', name); } function katakanHallo(name) { setImmediate(function () { console.log('Hallo,', name); }); } katakanHallo('Guntur'); tanyaKabar('Gun'); _6 saat melakukan proses function tanyaKabar(name) { console.log('Apa kabar,', name); } function katakanHallo(name) { setImmediate(function () { console.log('Hallo,', name); }); } katakanHallo('Guntur'); tanyaKabar('Gun'); 7
Untuk memahaminya, kita perlu mengetahui cara menangani kode async dengan function tanyaKabar(name) { console.log('Apa kabar,', name); } function katakanHallo(name) { setImmediate(function () { console.log('Hallo,', name); }); } katakanHallo('Guntur'); tanyaKabar('Gun'); 9 atau sync0
Kesimpulan
Yang perlu digarisbawahi adalah bagaimana kita mengurutkan setiap baris perintah agar dapat diproses dan dijalankan sesuai dengan tujuannya
Setiap kode yang akan ditulis tidak selalu menggunakan sync1 atau function tanyaKabar(name) { console.log('Apa kabar,', name); } function katakanHallo(name) { setImmediate(function () { console.log('Hallo,', name); }); } katakanHallo('Guntur'); tanyaKabar('Gun'); 3, selalu bergantung pada kebutuhan proses program