Async/Await pada Node.js - Perwira Learning Center
1. Latar Belakang
Dalam pengembangan aplikasi menggunakan Node.js, kita sering bekerja dengan proses asynchronous seperti membaca file, mengakses database, atau mengambil data dari API.
Awalnya, Node.js menggunakan Callback Pattern, namun sering menimbulkan masalah seperti callback hell. Kemudian hadir Promise yang membuat kode lebih rapi dan terstruktur.
Untuk membuat penulisan kode asynchronous menjadi lebih sederhana dan terlihat seperti kode synchronous (berjalan berurutan), diperkenalkan fitur async/await pada JavaScript ES8 (ECMAScript 2017).
Async/await sebenarnya dibangun di atas Promise, tetapi sintaksnya lebih mudah dipahami dan lebih nyaman digunakan, terutama dalam proyek skala besar.
2. Alat dan Bahan
- Browser
- OS (Windows atau Linux atau MacOS)
- Code Editor (VSCODE)
- Node.js
3. Pembahasan
3.1 Apa itu Async/Await?
-
asyncdigunakan untuk mendefinisikan fungsi asynchronous. -
awaitdigunakan untuk menunggu hasil dari Promise.
Fungsi yang diberi kata kunci
async otomatis akan
mengembalikan Promise.
Contoh sederhana:
async function sapa() {
return "Halo Dunia";
}
sapa().then(console.log);
3.2 Menggunakan Await
await hanya bisa digunakan
di dalam fungsi async.
Contoh menggunakan Promise:
function ambilData() {
return new Promise((resolve) => {
setTimeout(() => {
resolve("Data berhasil diambil");
}, 2000);
});
}
async function tampilkanData() {
const hasil = await ambilData();
console.log(hasil);
}
tampilkanData();
Penjelasan:
-
await ambilData()membuat program menunggu sampai Promise selesai. -
Kode terlihat seperti synchronous, tetapi tetap asynchronous.
3.3 Async/Await pada Operasi File
Contoh membaca file menggunakan module
fs dengan Promise:
const fs = require("fs").promises;
async function bacaFile() {
try {
const data = await fs.readFile("data.txt", "utf8");
console.log("Isi file:", data);
} catch (err) {
console.log("Terjadi kesalahan:", err);
}
}
bacaFile();
Di sini kita menggunakan
try...catch untuk menangani
error, yang membuat error handling lebih mudah dibanding
.then() dan
.catch().
3.4 Perbedaan Promise VS Async/Await
Promise:
ambilData()
.then(data => {
console.log(data);
})
.catch(err => {
console.log(err);
});
Async/Await:
try {
const data = await ambilData();
console.log(data);
} catch (err) {
console.log(err);
}
Async/await lebih bersih dan mudah dibaca, terutama jika prosesnya panjang.
3.5 Kelebihan dan Kekurangan Async/Await
Kelebihan:
-
Kode lebih bersih dan mudah dipahami
-
Terlihat seperti kode synchronous
-
Error handling lebih sederhana dengan try/catch
Kekurangan:
-
Harus memahami konsep Promise terlebih dahulu
-
Jika tidak hati-hati, bisa membuat proses berjalan secara berurutan padahal bisa paralel
4. Kesimpulan
Async/await adalah cara modern dan lebih sederhana untuk menangani proses asynchronous di Node.js. Fitur ini dibangun di atas Promise dan membuat kode lebih rapi serta mudah dibaca.
Bagi developer Node.js, memahami async/await sangat penting karena hampir semua aplikasi modern menggunakannya untuk mengelola proses asynchronous seperti API, database, dan file system.
Dengan menguasai async/await, kita dapat menulis kode yang lebih profesional, terstruktur, dan mudah dirawat.
