Asynchronous: setTimeout & Promise
Menangani pekerjaan yang butuh waktu tanpa membuat halaman membeku.
Tidak semua hal selesai seketika
Mengambil data dari internet, memutar timer, atau membaca file butuh waktu. JavaScript tidak mau menunggu sambil membeku, jadi ia menjalankan pekerjaan lain dulu dan kembali ketika hasilnya siap. Inilah asynchronous.
setTimeout
console.log("Mulai");
setTimeout(() => console.log("2 detik kemudian"), 2000);
console.log("Selesai");
// Urutan: Mulai, Selesai, 2 detik kemudian
Promise
Promise adalah "janji" bahwa sebuah hasil akan datang. Ada tiga keadaan: pending, fulfilled (berhasil), dan rejected (gagal).
function tungguSebentar(ms) {
return new Promise((resolve) => {
setTimeout(() => resolve("Sudah siap!"), ms);
});
}
tungguSebentar(1000).then(hasil => console.log(hasil));
async / await
Cara menulis kode async agar terbaca seperti kode biasa:
async function jalankan() {
const hasil = await tungguSebentar(1000);
console.log(hasil);
}
jalankan();
fetch (mengambil data)
const res = await fetch("https://api.example.com/data");
const data = await res.json();
Untuk menangani kegagalan gunakan try { ... } catch (err) { ... }.