Unit 3: Perulangan Peristiwa

Apa itu Event Loop?

Definisi dasarnya adalah “event loop adalah rahasia di balik pemrograman asinkron JavaScript.” Perulangan peristiwa berada di Lingkungan Waktu Proses JavaScript dan membantu dalam menjalankan program kami.

Kita tahu bahwa JavaScript adalah Bahasa Single-Thread Sinkron, Ia hanya memiliki satu tumpukan panggilan untuk menjalankan program kita, sebagai pengembang kita harus memastikan bahwa kita tidak memblokir thread utama.

Bagaimana Event Loop membantu dalam Pemrograman Asinkron?

Tumpukan panggilan mengeksekusi apa pun yang ada di dalamnya, tetapi katakanlah pengguna mengklik tombol dan memanggil fungsi yang membuat panggilan jaringan dan ada setTimeOut() dan itu dipanggil dan juga memanggil beberapa fungsi xyz() lainnya? Sekarang ini menjadi rumit, fungsi mana yang akan dieksekusi terlebih dahulu? Bagaimana cara Call Stack mengelolanya? Bagaimana Event Loop membantu Call Stack menjalankan semua ini?

Antrian Panggilan Balik

Antrian Panggilan Balik adalah antrean tempat semua fungsi panggilan balik datang dan berada ketika ingin dieksekusi, misalnya: setTimeOut(), setInterval(). Prioritasnya lebih rendah dibandingkan Antrean Tugas Mikro.

Antrean Tugas Mikro

Ini juga merupakan antrian dengan prioritas lebih tinggi daripada Antrean Callback. Semua fungsi panggilan balik dari janji masuk ke antrian Tugas Mikro ketika ingin dieksekusi, misalnya: ambil(). semua tugas mikro yang diantri dimasukkan ke tumpukan panggilan satu per satu, dan dieksekusi.

Dengan ini kita dapat memahami bahwa tidak semua fungsi yang dipanggil akan langsung masuk ke dalam tumpukan panggilan dan dieksekusi. Agar semua tugas antrean ini dapat dieksekusi, kita memerlukan Event Loop.

Perulangan Peristiwa dalam Aksi

Event Loop terus memeriksa tumpukan panggilan apakah tumpukan bebas untuk menjalankan tugas yang diantri atau tidak. Ketika tumpukan kosong, Event Loop mengizinkan tugas yang diantri berdasarkan prioritasnya. Jika ada fungsi panggilan balik yang menunggu untuk dieksekusi di Antrean Tugas Mikro, fungsi tersebut terlebih dahulu mengizinkan panggilan balik yang ada di Antrean Tugas Mikro, dan ketika tidak ada lagi yang tersisa di Antrean Tugas Mikro untuk dijalankan, maka fungsi tersebut akan berjalan dan memeriksa Antrean Panggilan Balik (Antrian Tugas || Antrean Tugas Makro) dan jika ada fungsi apa pun dalam antrian untuk mengeksekusi loop peristiwa dengan cepat memungkinkan mereka untuk berpindah ke dalam tumpukan panggilan dan tumpukan panggilan mengeksekusinya. Ini juga merupakan ide dasar tentang Pemrograman Asinkron.