Callback Functions
Callback functions adalah sebuah konsep dalam pemrograman JavaScript di mana sebuah fungsi (callback) akan dipanggil setelah operasi tertentu selesai dieksekusi. Hal ini memungkinkan kita untuk melakukan tindakan setelah tugas tertentu selesai dilakukan.
Mengapa Kita Perlu Callback Functions?
Dalam Node.js, banyak operasi yang bersifat asinkron (tidak blocking), seperti membaca file atau melakukan koneksi ke database. Menggunakan callback functions memungkinkan kita untuk menangani hasil dari operasi tersebut setelah selesai dilakukan.
Langkah 1: Membuat Fungsi Asinkron
Pertama, mari buat fungsi asinkron sederhana sebagai contoh:
function lakukanTugas(callback) {
setTimeout(function() {
let hasil = "Tugas selesai!";
callback(hasil);
}, 2000); // Simulasi tugas yang memakan waktu 2 detik
}
Fungsi lakukanTugas
di atas akan menunggu selama 2 detik sebelum memanggil callback dengan pesan "Tugas selesai!".
Langkah 2: Menggunakan Callback Function
Sekarang, mari kita panggil fungsi lakukanTugas
dan terapkan callback function:
lakukanTugas(function(hasil) {
console.log(hasil);
});
Kode di atas akan mencetak "Tugas selesai!" setelah 2 detik.
Mengatasi Nesting Callbacks (Callback Hell)
Penting untuk menghindari callback hell (penanaman callback berulang). Alternatif yang lebih baik adalah menggunakan Promise atau async/await.
Menggunakan Promise (Opsional)
Jika Anda ingin meningkatkan manajemen alur kontrol, Anda dapat menggunakan Promise:
function lakukanTugas() {
return new Promise(function(resolve, reject) {
setTimeout(function() {
let hasil = "Tugas selesai!";
resolve(hasil);
}, 2000);
});
}
// Menggunakan Promise
lakukanTugas()
.then(function(hasil) {
console.log(hasil);
})
.catch(function(error) {
console.error(error);
});
Kesimpulan
Callback functions adalah alat yang kuat untuk menangani operasi asinkron di Node.js. Namun, seiring dengan pengenalan Promise dan async/await, Anda memiliki pilihan yang lebih baik untuk mengelola alur kontrol. Pilihlah pendekatan yang sesuai dengan kebutuhan proyek Anda.