Async/await dalam JavaScript
Dalam artikel ini, kami akan menjelaskan async/await dalam JavaScript.
YouTube Video
Async/await dalam JavaScript
async
(dan await
) dalam JavaScript adalah fitur yang dirancang untuk membuat penulisan operasi asinkron lebih intuitif dan mudah dibaca. Dengan menggunakan ini, Anda dapat mengurangi kompleksitas fungsi callback tradisional dan rantai Promise
, serta menulis kode asinkron dengan cara yang terlihat seperti kode sinkron.
Fungsi async
async
digunakan untuk mendefinisikan sebuah fungsi sebagai fungsi asinkron. Fungsi async
selalu mengembalikan sebuah Promise. Dalam sebuah fungsi yang ditandai dengan async
, Anda dapat menggunakan await
untuk menunggu hasil dari sebuah Promise untuk dikembalikan.
Sintaks Dasar dari Fungsi async
1async function myAsyncFunction() {
2 // Write asynchronous processing here
3 return 'Result'; // Return a Promise
4}
Dalam kasus ini, memanggil myAsyncFunction()
secara otomatis mengembalikan objek Promise. Ketika Promise diselesaikan, hasilnya menjadi nilai yang dikembalikan oleh return
.
Contoh: Fungsi async
Dasar
1async function greet() {
2 return 'Hello, World!';
3}
4
5greet().then((message) => {
6 console.log(message); // Displays "Hello, World!"
7});
await
await
digunakan untuk menunggu sebuah Promise diselesaikan. Dengan menggunakan await
, Anda dapat menghentikan sementara eksekusi hingga Promise diselesaikan dan menerima hasil dari Promise tersebut. await
hanya dapat digunakan di dalam fungsi async
.
Contoh: Cara Menggunakan await
1async function fetchData() {
2 // Wait for the result of the Promise
3 const data = await fetch('https://codesparklab.com/json/example.json');
4 // Wait for the asynchronous operation to complete
5 const jsonData = await data.json();
6 // Retrieve and display the data
7 console.log(jsonData);
8}
9
10fetchData();
Dalam contoh di atas, fungsi menunggu Promise yang dikembalikan oleh fungsi fetch
menggunakan await
, lalu melanjutkan operasi asinkron menggunakan hasilnya.
Penanganan Error dengan async
/await
Jika terjadi error di dalam fungsi async
, error tersebut dianggap sebagai reject
dari Promise. Anda dapat menggunakan pernyataan try...catch
untuk melakukan penanganan error.
Contoh: Penanganan Error
1async function fetchData() {
2 try {
3 // Invalid URL
4 const data = await fetch('https://api.invalid-url.com/data');
5 const jsonData = await data.json();
6 console.log(jsonData);
7 } catch (error) {
8 // Catch the error
9 console.error('Failed to fetch data:', error);
10 }
11}
12
13fetchData();
Menggunakan blok try...catch
memungkinkan Anda menangkap error yang terjadi selama operasi asinkron, mencegah program crash ketika error terjadi.
Manfaat dari async
/await
Dibandingkan dengan rantai Promise
tradisional, async
/await
menawarkan keuntungan-keuntungan berikut:.
- Keterbacaan yang lebih baik
- Proses asinkron dapat ditulis seperti kode sinkron, sehingga menghindari kompleksitas rantai
Promise
dan callback yang sangat bersarang.
- Proses asinkron dapat ditulis seperti kode sinkron, sehingga menghindari kompleksitas rantai
- Debugging lebih mudah
- Karena tampilannya seperti kode sinkron, debugging dan penanganan error menjadi lebih mudah.
- Kemudahan pemeliharaan yang lebih baik
- Proses asinkron dapat ditulis dengan lebih sederhana, sehingga memudahkan dalam mengubah atau memodifikasi kode dan meningkatkan pemeliharaan jangka panjang.
Contoh: Rantai Promise
vs async
/await
Mari kita bandingkan kode yang menggunakan rantai Promise
dan kode yang menggunakan async
/await
.
1// Code using Promise chains
2function fetchDataPromise() {
3 fetch('https://codesparklab.com/json/example.json')
4 .then((response) => response.json())
5 .then((data) => {
6 console.log(data);
7 })
8 .catch((error) => {
9 console.error('Failed to fetch data:', error);
10 });
11}
12
13// Code using async/await
14async function fetchDataAsync() {
15 try {
16 const response = await fetch('https://codesparklab.com/json/example.json');
17 const data = await response.json();
18 console.log(data);
19 } catch (error) {
20 console.error('Failed to fetch data:', error);
21 }
22}
Seperti yang dapat Anda lihat, menggunakan async
/await
memungkinkan Anda untuk menulis proses asinkron secara linear, sehingga menghasilkan kode yang lebih mudah dibaca.
Melaksanakan beberapa operasi asinkron secara bersamaan
Dengan menggabungkan Promise.all()
atau Promise.race()
dengan await
, Anda dapat melaksanakan beberapa operasi asinkron secara bersamaan dan menangani hasilnya sekaligus.
Contoh: Melaksanakan beberapa operasi asinkron secara bersamaan
1async function fetchMultipleData() {
2 try {
3 const [data1, data2] = await Promise.all([
4 fetch('https://codesparklab.com/json/example1.json'),
5 fetch('https://codesparklab.com/json/example2.json')
6 ]);
7 const jsonData1 = await data1.json();
8 const jsonData2 = await data2.json();
9 console.log(jsonData1, jsonData2);
10 } catch (error) {
11 console.error('Failed to fetch data:', error);
12 }
13}
14
15fetchMultipleData();
Promise.all()
menyelesaikan beberapa Promise secara bersamaan dan mengembalikan hasilnya sebagai array. Ini menunggu semua Promise terselesaikan, dan jika ada yang gagal, maka dianggap gagal secara keseluruhan.
Ringkasan
- Fungsi
async
: Selalu mengembalikan Promise dan digunakan untuk menulis pemrosesan asinkron. await
: Digunakan untuk menunggu suatu Promise selesai dan menerima hasilnya.- Penanganan error: Gunakan
try...catch
untuk menangani error yang terjadi selama pemrosesan asinkron. - Beberapa operasi asinkron: Anda dapat melaksanakan beberapa operasi asinkron secara bersamaan menggunakan
Promise.all()
.
async
/await
adalah alat yang kuat untuk menangani pemrosesan asinkron, jadi pastikan untuk menggunakannya agar dapat menyederhanakan logika asinkron yang kompleks.
Anda dapat mengikuti artikel di atas menggunakan Visual Studio Code di saluran YouTube kami. Silakan periksa juga saluran YouTube kami.