Apakah ada cara di JavaScript untuk memanggil fungsi asinkron secara paralel (berbarengan) tanpa harus menunggu salah satu selesai?
Contoh:
async function getPosts() {
const res = await fetch('https://jsonplaceholder.typicode.com/posts', {method: "GET"});
const posts = await res.json();
return posts;
}
async function getUsers() {
const res = await fetch('https://jsonplaceholder.typicode.com/users', {method: "GET"});
const users = await res.json();
return users;
}
(async () => {
const posts = await getPosts();
const users = await getUsers();
console.log(posts);
console.log(users);
})()
Pada contoh kode diatas, ketika memanggil await getUsers()
, panggilan fungsi tersebut harus menunggu await getPosts()
selesai. Saya tidak ingin itu salin menunggu, saya ingin itu dieksekusi secara paralel (berbarengan), bagaimana caranya ya?
Bisa pakai Promise.all(). Contoh:
const [posts, users] = await Promise.all([getPosts(), getUsers()])
Promise.all()
bekerja dengan cara fails-fast, artinya jika salah satu Promise di reject, semuanya akan di reject.
Alternatifnya bisa menggunakan Promise.allSettled() yang akan menunggu semua Promise sampai settled, entah itu Promise yang di reject maupun resolve.
Kamu tau jawabannya?
Ayo bergabung bersama lebih dari 200.000 pengguna lainnya!