Callback Function
Callback Function adalah fungsi yang dikirimkan ke dalam fungsi lain sebagai parameter/argumen. Fungsi ini tidak dijalankan langsung, melainkan "dititipkan" agar dieksekusi di kemudian hari (called back) oleh fungsi penerima setelah tugas tertentu selesai dikerjakan.
1. Analogi Pelayan Restoran
Bayangkan Anda memesan makanan di sebuah restoran.
2. Penerapan Callback Sinkron vs Asinkron
Berdasarkan urutan eksekusinya, callback dibagi menjadi dua pola utama:
A. Synchronous Callback (Sinkron)
Dijalankan secara langsung dan berurutan, menghalangi baris kode di bawahnya hingga callback selesai. Contohnya adalah method array forEach di JavaScript:
const namaSiswa = ["Andi", "Budi", "Cika"];
namaSiswa.forEach(function(nama) {
console.log("Siswa: " + nama); // Callback ini langsung jalan berurutan
});
console.log("Selesai memproses siswa"); // Baris ini menunggu baris atas selesai
B. Asynchronous Callback (Asinkron)
Dijalankan di latar belakang tanpa menghalangi eksekusi baris kode berikutnya. Berguna untuk tugas-tugas berat seperti memanggil data dari server internet.
console.log("Memulai download...");
setTimeout(function() {
console.log("Download file selesai!"); // Berjalan setelah 2 detik
}, 2000);
console.log("Membuka aplikasi..."); // Berjalan langsung tanpa menunggu 2 detik
3. Bahaya "Callback Hell"
Ketika kita memiliki banyak proses asinkron berurutan yang saling bergantung (contoh: ambil ID user -> cari profil -> ambil daftar foto -> ambil komentar foto), penulisan callback di dalam callback secara bertingkat akan membuat kode menjorok ke kanan sangat dalam.
ambilUser(id, function(user) {
ambilProfil(user, function(profil) {
ambilFoto(profil, function(foto) {
ambilKomentar(foto, function(komentar) {
console.log(komentar); // Ini disebut Callback Hell / Pyramid of Doom
});
});
});
});
Solusi Modern: Pengembang web modern mengatasi Callback Hell dengan menggunakan Promises atau sintaks async/await yang membuat penulisan kode asinkron tampak bersih seperti kode sinkron biasa.
Uji Pemahaman Mandiri
Mengapa pemrograman asinkron di JavaScript sangat bergantung pada Callback Function?
