Temukan Lowongan Pekerjaan Di MSBU!
Dalam pengembangan web modern, menangani operasi asinkron adalah bagian penting dalam membangun aplikasi yang responsif dan efisien. JavaScript memiliki beberapa mekanisme untuk menangani tugas asinkron, seperti callback, Promise, dan yang lebih modern adalah async dan await. Dengan async dan await, penulisan kode asinkron menjadi lebih mudah dibaca dan dipahami, menyerupai kode sinkron.
Artikel ini akan membahas secara mendalam apa itu async dan await, bagaimana cara menggunakannya, serta contoh implementasi dalam berbagai kasus penggunaan.
Baca juga: QA Engineer Vs Software Tester? Mana yang Dibutuhkan
Async dan await adalah fitur dalam JavaScript yang diperkenalkan dalam ECMAScript 2017 (ES8) untuk menangani operasi asinkron dengan lebih sederhana dibandingkan dengan callback dan Promise.
Dengan menggabungkan async dan await, kita dapat menulis kode yang lebih bersih dan lebih mudah dipahami dibandingkan menggunakan Promise chaining atau callback hell.
Untuk menggunakan await, sebuah fungsi harus dideklarasikan sebagai fungsi async. Berikut adalah contoh mendeklarasikan fungsi async:
async function fetchData() {
return "Data berhasil diambil";
}
fetchData().then(console.log); // Output: Data berhasil diambil
Dalam contoh di atas, fungsi fetchData() selalu mengembalikan sebuah Promise, meskipun kita tidak secara eksplisit menuliskan Promise.resolve(). JavaScript secara otomatis mengubah nilai return menjadi Promise.
Sekarang, mari kita gunakan await untuk menangani sebuah Promise di dalam fungsi async.
async function fetchData() {
let data = await new Promise(resolve => setTimeout(() => resolve("Data berhasil diambil"), 2000));
console.log(data);
}
fetchData();
Dalam contoh ini, await digunakan untuk menunggu penyelesaian dari Promise yang menyimulasikan pengambilan data dalam 2 detik. Ketika Promise selesai, hasilnya disimpan dalam variabel data, lalu ditampilkan ke konsol.
Saat bekerja dengan operasi asinkron, kita harus menangani kemungkinan terjadinya error. Dengan async dan await, kita bisa menggunakan try...catch untuk menangani kesalahan dengan cara yang lebih bersih dibandingkan dengan .catch() pada Promise.
async function fetchData() {
try {
let response = await fetch("https://jsonplaceholder.typicode.com/posts/1");
let data = await response.json();
console.log(data);
} catch (error) {
console.error("Terjadi kesalahan: ", error);
}
}
fetchData();
Dalam contoh ini, jika terjadi error saat mengambil data dari API, error tersebut akan ditangkap di dalam blok catch, sehingga tidak menyebabkan aplikasi berhenti.
Sebelum async dan await, developer menggunakan callback dan Promise untuk menangani operasi asinkron. Namun, kedua metode ini memiliki beberapa kelemahan.
Contoh kode menggunakan Promise chaining:
fetch("https://jsonplaceholder.typicode.com/posts/1")
.then(response => response.json())
.then(data => console.log(data))
.catch(error => console.error("Terjadi kesalahan: ", error));
Dengan async dan await, kode yang sama dapat ditulis dengan lebih sederhana:
async function getData() {
try {
let response = await fetch("https://jsonplaceholder.typicode.com/posts/1");
let data = await response.json();
console.log(data);
} catch (error) {
console.error("Terjadi kesalahan: ", error);
}
}
getData();
Dengan async dan await, kode lebih ringkas dan mudah dipahami tanpa harus berurusan dengan banyak .then().
Salah satu penggunaan utama async dan await adalah dalam pengambilan data dari API. Seperti contoh sebelumnya, menggunakan fetch dengan await memungkinkan pengolahan data menjadi lebih efisien.
Saat ada lebih dari satu Promise yang harus dijalankan bersamaan, kita bisa menggunakan Promise.all(). Ini memungkinkan beberapa operasi dijalankan secara paralel dan menunggu semuanya selesai sebelum melanjutkan eksekusi.
async function fetchMultipleData() {
try {
let [data1, data2] = await Promise.all([
fetch("https://jsonplaceholder.typicode.com/posts/1").then(res => res.json()),
fetch("https://jsonplaceholder.typicode.com/posts/2").then(res => res.json())
]);
console.log(data1, data2);
} catch (error) {
console.error("Terjadi kesalahan: ", error);
}
}
fetchMultipleData();
Kode di atas memungkinkan dua fetch API dilakukan secara paralel, sehingga lebih efisien dibandingkan menjalankan satu per satu.
Baca juga: DeepSeek AI: Ancaman atau Peluang bagi Industri Teknologi?
Async dan await adalah fitur penting dalam JavaScript modern yang membantu mengatasi kompleksitas dalam menangani operasi asinkron. Dengan menggunakan async dan await, kode menjadi lebih bersih, mudah dibaca, dan menyerupai alur eksekusi sinkron.
Dengan memahami konsep ini dan menerapkannya dalam pengembangan aplikasi, developer dapat meningkatkan efisiensi dan keterbacaan kode mereka, serta menghindari jebakan seperti callback hell atau promise chaining yang kompleks. Jika digunakan dengan baik, async dan await dapat menjadi alat yang sangat kuat dalam pengelolaan tugas asinkron dalam JavaScript.
Temukan Lowongan Pekerjaan Di MSBU!