Kode Asinkron dengan Callback di JavaScript
Misalkan kita memiliki suatu fungsi asinkron:
function make() {
setTimeout(function() {
console.log('1');
}, 3000);
}
Misalkan kita menggunakan fungsi ini dengan cara berikut:
make();
console.log('2'); // akan dieksekusi pertama
Misalkan kita ingin membuat agar output kedua
ke konsol dieksekusi setelah
operasi asinkron di dalam fungsi selesai.
Salah satu pendekatan yang digunakan untuk ini
adalah penggunaan callback:
bungkus kode yang menunggu ke dalam fungsi anonim
dan berikan sebagai parameter ke fungsi make:
make(function() {
console.log('2');
});
Tentu saja, ini sendiri tidak menyelesaikan
masalah kita. Untuk saat ini, kita hanya membuat
kesepakatan: jika ingin mengeksekusi kode setelah
make dipicu, berikan kode tersebut
sebagai callback dalam pemanggilan make.
Mari perbaiki kode fungsi make agar
ia mulai bekerja sesuai dengan kesepakatan
kita:
function make(callback) {
setTimeout(function() {
console.log('1'); // semacam operasi asinkron, bisa lebih dari satu
callback(); // kemudian callback kita
}, 3000);
}
Jelaskan, dalam urutan apa angka-angka akan ditampilkan di konsol:
function make(callback) {
setTimeout(function() {
console.log('1');
callback();
}, 3000);
}
make(function() {
console.log('2');
console.log('3');
});