Perbedaan Promise, async/await, dan Penggunaan Promise.all dalam React

Varrel Al Jabaar K
Sebagai seseorang yang sedang belajar React dan JavaScript secara mendalam, aku sering menemui kode asynchronous, terutama saat fetch data dari API. Di awal, aku mengenal Promise lebih dulu karena sering muncul di dokumentasi dan tutorial. Tapi seiring waktu, aku mulai terbiasa menggunakan async/await karena penulisannya terasa lebih sederhana dan rapi.
Meskipun secara fungsi keduanya sama, aku sadar pentingnya menjaga konsistensi dalam gaya penulisan kode. Dari sinilah aku mulai mendalami perbedaan antara Promise dan async/await, serta menemukan bahwa Promise.all bisa sangat membantu ketika ingin menjalankan beberapa request secara paralel.
Perbandingan Promise vs async/await
| Fitur | Promise | async/await |
|---|---|---|
| Gaya Penulisan | Lebih "callback style" dengan .then() |
Lebih mirip kode synchronous |
| Error Handling | .catch() |
try and catch |
| Readability | Bisa jadi rumit jika banyak chaining | Lebih mudah dibaca, terutama untuk proses berurutan |
| Kompatibilitas | Bisa digunakan di browser lama | Butuh transpiler untuk browser lama |
Contoh Penggunaan di React
Dengan Promise:
useEffect(() => {
fetch("https://jsonplaceholder.typicode.com/users/1")
.then((res) => res.json())
.then((data) => setUser(data))
.catch((err) => console.error(err));
}, []);Dengan async/await:
useEffect(() => {
const fetchUser = async () => {
try {
const res = await fetch("https://jsonplaceholder.typicode.com/users/1");
const data = await res.json();
setUser(data);
} catch (err) {
console.error(err);
}
};
fetchUser();
}, []);Penggunaan Promise.all di React
Ketika butuh mengambil 2 data atau banyak data sekaligus (secara paralel), Promise.all adalah solusi yang sangat efisien. Contoh gabungan async/await dan Promise.all:
useEffect(() => {
const fetchData = async () => {
try {
const [userRes, postRes] = await Promise.all([
fetch("https://jsonplaceholder.typicode.com/users/1"),
fetch("https://jsonplaceholder.typicode.com/posts/1"),
]);
const user = await userRes.json();
const post = await postRes.json();
setData({ user, post });
} catch (error) {
console.error("Gagal fetch:", error);
}
};
fetchData();
}, []);🧠Penutup: Konsistensi adalah Kunci
Walaupun Promise dan async/await hanya berbeda di cara penulisan, konsistensi gaya coding sangat penting untuk menjaga kualitas dan keterbacaan kode. Jika kamu sudah memakai async/await, tetaplah menggunakan pendekatan tersebut agar kode tetap seragam dan lebih mudah dikelola.
Gunakan Promise.all saat ingin mengambil banyak data secara paralel dan tidak bergantung satu sama lain.
