Callback Pattern pada Node.js - Perwira Learning Center

 

1. Latar Belakang

    Node.js adalah runtime JavaScript yang memungkinkan kita menjalankan JavaScript di luar browser. Node.js menggunakan konsep non-blocking I/O dan asynchronous programming, artinya proses tidak harus menunggu satu tugas selesai sebelum mengerjakan tugas lainnya.

Karena Node.js berjalan di satu thread utama (single-threaded) tetapi menangani banyak proses sekaligus, maka dibutuhkan cara khusus untuk mengatur proses asynchronous. Salah satu pola dasar yang digunakan adalah Callback Pattern.

Callback pattern adalah teknik di mana sebuah fungsi dikirim sebagai argumen ke fungsi lain, lalu dipanggil kembali (callback) setelah proses selesai. Pola ini sangat penting dalam Node.js, terutama pada operasi seperti membaca file, mengambil data dari database, atau request ke server.


2. Alat dan Bahan

  • Browser 
  • OS (Windows atau Linux atau MacOS)
  • Code Editor (VSCODE)
  • Node.js


3. Pembahasan

    3.1 Apa itu Callback?

Callback adalah fungsi yang dikirim sebagai parameter ke fungsi lain, lalu dijalankan setelah proses tertentu selesai.

Contoh sederhana:


  function sapa(nama, callback) {
  console.log("Halo " + nama);
  callback();
}

function selesai() {
  console.log("Proses selesai");
}

sapa("Agus", selesai);


    3.2 Callback pada Operasi Asynchronous

Node.js sering digunakan untuk operasi asynchronous, misalnya membaca file.

Contoh menggunakan module fs:

  const fs = require("fs");

fs.readFile("data.txt", "utf8", function(err, data) {
  if (err) {
    console.log("Terjadi kesalahan:", err);
    return;
  }
  console.log("Isi file:", data);
});


Penjelasan:

  • fs.readFile membutuhkan callback function.

  • Callback memiliki dua parameter umum: err dan data.

  • Jika terjadi error, err akan berisi informasi error.

  • Jika berhasil, data berisi hasilnya.

Ini disebut juga Error-First Callback Pattern, yaitu pola callback yang parameter pertamanya selalu error.


    3.3 Mengapa Callback Penting di Node.js?

Karena Node.js bersifat non-blocking.

Contoh perbandingan:

  const fs = require("fs");

console.log("Mulai");

setTimeout(() => {
  console.log("Proses selesai");
}, 2000);

console.log("Selesai duluan");
Artinya Node.js tidak menunggu 2 detik, tetapi langsung lanjut menjalankan kode berikutnya.

    3.4 Callback Hell

Salah satu masalah callback adalah jika terlalu banyak callback bersarang (nested), kode menjadi sulit dibaca. Ini disebut Callback Hell.

Contoh:

    loginUser(username, function(user) {
  getUserData(user.id, function(data) {
    getUserPermissions(data.role, function(permission) {
      console.log(permission);
    });
  });
}); 

Kode seperti ini sulit dipahami dan dirawat.
Karena itu, pada perkembangan selanjutnya diperkenalkan Promise dan async/await untuk mengatasi masalah ini

    3.5 Kelebihan dan Kekurangan

Kelebihan:

  • Sederhana dan mudah dipahami untuk kasus kecil

  • Cepat dan ringan

  • Cocok untuk operasi asynchronous sederhana

Kekurangan:

  • Bisa menyebabkan callback hell

  • Sulit dibaca jika terlalu banyak nested

  • Error handling bisa membingungkan


4. Kesimpulan

    Callback Pattern adalah dasar dari pemrograman asynchronous di Node.js. Dengan callback, Node.js dapat menjalankan banyak proses tanpa harus menunggu satu proses selesai terlebih dahulu.

Meskipun memiliki kekurangan seperti callback hell, memahami callback sangat penting karena menjadi fondasi sebelum mempelajari Promise dan async/await.

Bagi pemula yang ingin serius belajar Node.js, memahami Callback Pattern adalah langkah awal yang wajib sebelum masuk ke konsep asynchronous yang lebih modern.