Async dan Await adalah cara baru untuk menangani Promise. Fitur ini sebenarnya hanya "bungkus" (syntactic sugar) di atas Promise agar kode kita tidak penuh dengan callback atau .then() yang bertumpuk-tumpuk (sering disebut Callback Hell).
🧩 Apa yang Akan Dipelajari
- Mengubah fungsi biasa menjadi fungsi Async.
- Menggunakan kata kunci Await untuk menghentikan waktu sejenak.
- Menangani error dengan Try & Catch (Gaya baru).
- Simulasi ambil data yang terasa seperti kode sinkronus.
⚙️ Persiapan
- Buka Console browser (F12).
- Pastikan kamu sudah paham konsep Promise (#14) karena Await hanya bisa bekerja pada fungsi yang menghasilkan Promise.
🚀 Langkah-Langkah
1. Deklarasi Fungsi async
Cukup tambahkan kata async di depan fungsi. Ini memberi tahu JavaScript bahwa di dalam fungsi ini, mungkin ada proses yang butuh waktu nunggu.
async function ambilKopi() {
return "Kopi Espresso";
}
// Fungsi async otomatis mengembalikan Promise!
ambilKopi().then(hasil => console.log(hasil));
2. Keajaiban await
await hanya bisa dipakai di dalam fungsi async. Fungsinya? Menyuruh JavaScript: "Tolong berhenti di baris ini, jangan lanjut ke bawah sampai janji (Promise) ini selesai!"
const prosesMasak = () => {
return new Promise((resolve) => {
setTimeout(() => resolve("Nasi Goreng Spesial"), 3000);
});
};
async function sajikanMakanan() {
console.log("Pesanan diterima, mulai masak...");
// JavaScript bakal 'diam' di sini selama 3 detik
const makanan = await prosesMasak();
console.log(`Selesai! Ini ${makanan} kamu.`);
}
sajikanMakanan();
3. Menangani Error (Try & Catch)
Kalau di Promise kita pakai .catch(), di Async/Await kita pakai blok try...catch. Ini jauh lebih mirip cara kita nanganin error di bahasa pemrograman lain.
async function ambilDataUser() {
try {
const data = await prosesAmbilData(); // Anggap ini fungsi yang bisa gagal
console.log(data);
} catch (error) {
console.error("Waduh, koneksi internet putus!", error);
}
}
4. Kenapa Harus Async/Await?
Bayangkan kalau kamu punya 3 proses yang harus urutan (Ambil User -> Ambil Alamat -> Ambil Cuaca).
- Pake
.then(): Bakal menjorok ke dalam terus (Piramida). - Pake
await: Cuma nulis 3 baris ke bawah. Rapi banget!
💡 Tips Tambahan
- Jangan Lupa
async: Sering banget pemula tulisawaittapi lupa kasihasyncdi fungsinya. Hasilnya? ErrorSyntaxError: await is only valid in async functions. - Urutan Eksekusi: Ingat,
awaitcuma nahan kode di dalam fungsi async itu saja. Kode lain di luar fungsi tetap jalan terus (gak bikin browser macet). - Parallel vs Sequential: Kalau ada 2 proses yang gak saling nunggu, jangan di-await satu-satu secara berurutan. Kamu bisa pakai
Promise.all()biar barengan!
❗ Troubleshooting
Masalah: Kenapa aplikasi saya nge-freeze pas nunggu await?
Solusi: await tidak membuat browser nge-freeze karena ia bersifat non-blocking. Kalau browser kamu freeze, mungkin ada perulangan (looping) yang tidak berhenti di bagian lain kodemu, bukan karena await.
🎯 Kesimpulan
Async/Await adalah cara paling elegan untuk mengelola tugas berat di JavaScript. Kamu sudah belajar cara bikin fungsi async, cara "sabar" nunggu pakai await, dan cara elegan nanganin error pakai try-catch. Sekarang, kamu sudah siap tempur di dunia nyata!