By Dynastina Blog in programming on 19 November 2025

Menguasai JavaScript Asynchronous: Promise dan Async/Await

Menguasai JavaScript Asynchronous: Promise dan Async/Await

Memahami Asynchronous JavaScript: Perang Melawan Kelambatan

Bayangkan kamu memesan makanan di restoran. Kamu nggak mungkin langsung dapat makanan kan? Ada prosesnya: memesan, menunggu chef memasak, lalu makanan disajikan. Begitu juga dengan JavaScript. Kadang, kode kita perlu menunggu sesuatu—misalnya, mengambil data dari server—sebelum melanjutkan ke langkah berikutnya. Ini disebut asynchronous operation. Kalau JavaScript cuma jalan lurus tanpa menunggu, aplikasi kita bakal freeze dan pengguna bakal bete banget. Makanya, kita butuh cara untuk menangani tugas-tugas yang butuh waktu lebih lama tanpa bikin aplikasi kita lemot.

JavaScript sendiri bersifat single-threaded, artinya hanya bisa mengerjakan satu hal dalam satu waktu. Bayangkan dia seperti tukang masak yang cuma punya satu kompor. Kalau dia masak satu menu, menu lainnya harus menunggu. Nah, asynchronous programming adalah solusinya. Ini seperti tukang masak yang punya beberapa kompor, jadi bisa masak beberapa menu sekaligus!

Kenalan dengan Promise: Janji yang Harus Ditepati

Promise adalah objek yang merepresentasikan hasil dari suatu operasi asynchronous. Bayangkan ini seperti janji dari restoran: "Makananmu akan siap dalam 15 menit". Janji ini bisa terpenuhi (fulfilled) atau gagal (rejected). Promise punya tiga status:

  • Pending: Sedang diproses (masih menunggu makanan).
  • Fulfilled: Berhasil (makanan sudah siap).
  • Rejected: Gagal (restoran kehabisan bahan baku).

Kita bisa menggunakan .then() untuk menangani hasil jika promise terpenuhi, dan .catch() untuk menangani error jika promise gagal. Contohnya:


fetch('https://api.example.com/data')
  .then(response => response.json())
  .then(data => console.log(data))
  .catch(error => console.error('Error:', error));

Kode di atas mengambil data dari API. .then() pertama mengubah response menjadi JSON, dan .then() kedua menampilkan data ke konsol. .catch() menangani error jika terjadi masalah saat mengambil data.

Async/Await: Membuat Kode Asynchronous Lebih Mudah Dibaca

Async/await adalah fitur JavaScript yang membuat kode asynchronous lebih mudah dibaca dan ditulis. Bayangkan ini seperti menu di restoran yang sudah rapi dan mudah dipahami, tidak perlu lagi mikir panjang bagaimana cara memesan.

Kata kunci async menandakan sebuah fungsi yang akan mengembalikan promise. Kata kunci await hanya bisa digunakan di dalam fungsi async, dan akan menghentikan eksekusi fungsi sampai promise yang di-await selesai.


async function fetchData() {
  try {
    const response = await fetch('https://api.example.com/data');
    const data = await response.json();
    console.log(data);
  } catch (error) {
    console.error('Error:', error);
  }
}

fetchData();

Kode di atas melakukan hal yang sama dengan contoh promise sebelumnya, tetapi lebih mudah dibaca dan dipahami. await membuat kode terlihat seperti kode synchronous, padahal di balik layar masih tetap asynchronous.

Studi Kasus: Mengunduh Gambar dari Internet

Misalkan kita ingin menampilkan gambar dari internet di website kita. Kita bisa menggunakan fetch dan async/await untuk mengunduh gambar tersebut secara asynchronous:


async function displayImage(imageUrl) {
  try {
    const response = await fetch(imageUrl);
    const blob = await response.blob();
    const objectURL = URL.createObjectURL(blob);
    const img = document.createElement('img');
    img.src = objectURL;
    document.body.appendChild(img);
  } catch (error) {
    console.error('Error:', error);
  }
}

displayImage('https://www.example.com/image.jpg');

Kode ini mengunduh gambar, mengubahnya menjadi blob (data mentah), lalu menampilkannya di halaman web. Dengan async/await, kode ini mudah dibaca dan dipahami, bahkan untuk pemula sekalipun. Tidak perlu lagi pusing dengan callback hell!

Tips dan Trik Mengelola Promise dan Async/Await

  • Gunakan try...catch untuk menangani error.
  • Hindari callback hell dengan menggunakan async/await.
  • Gunakan Promise.all() untuk menjalankan beberapa promise secara paralel.
  • Pahami konsep race condition dan bagaimana cara mengatasinya.

Baca juga: Bangun API Microservices Laravel yang Skalabel

Kesimpulan: Asynchronous JavaScript Bukan Lagi Monster

Mempelajari asynchronous JavaScript mungkin awalnya terasa menakutkan, seperti menghadapi monster berkepala tiga. Tapi dengan memahami konsep promise dan async/await, kamu akan menemukan bahwa itu sebenarnya mudah dan menyenangkan. Cobalah terapkan sendiri contoh-contoh kode di atas, dan kamu akan melihat betapa mudahnya membuat aplikasi web yang responsif dan efisien. Selamat berjuang, para pengembang hebat! 🎉

Referensi

You may also like

Related posts

Scroll