Event Loop adalah sumber kebingungan bagi banyak developer, tetapi ini adalah bagian mendasar dari mesin JavaScript. Inilah yang memungkinkan JavaScript menjadi single-threaded, namun dapat dieksekusi dengan cara yang tidak memblokir. Untuk memahami Event Loop, pertama-tama kita perlu menjelaskan beberapa hal tentang mesin JavaScript, seperti Call Stack, Tasks, Microtasks, dan Queue masing-masing. Mari kita uraikan satu per satu Show
Tumpukan PanggilanCall Stack adalah struktur data yang melacak eksekusi kode JavaScript. Seperti namanya, ini adalah tumpukan, jadi struktur data LIFO (Last In, First Out) di memori. Setiap fungsi yang dijalankan direpresentasikan sebagai bingkai di Call Stack dan ditempatkan di atas fungsi sebelumnya Mari kita lihat contoh sederhana, langkah demi langkah function foo() { console.log('foo'); bar(); } function bar() { console.log('bar'); }
Tugas dan Antrian TugasTugas dijadwalkan, blok kode sinkron. Saat mengeksekusi, mereka memiliki akses eksklusif ke Call Stack dan juga dapat mengantrikan tugas lainnya. Di antara Tugas, browser dapat melakukan pembaruan rendering. Tugas disimpan dalam Antrean Tugas, menunggu untuk dieksekusi oleh fungsi terkaitnya. Antrean Tugas, pada gilirannya, adalah struktur data FIFO (First In, First Out). Contoh Tugas termasuk fungsi panggilan balik dari pendengar acara yang terkait dengan acara dan panggilan balik Microtasks dan Antrean MicrotaskMicrotasks mirip dengan Tasks karena dijadwalkan, blok kode sinkron dengan akses eksklusif ke Call Stack saat mengeksekusi. Selain itu, mereka disimpan dalam struktur data FIFO (First In, First Out) mereka sendiri, Antrian Microtask. Microtasks berbeda dari Tasks, bagaimanapun, di Microtask Queue harus dikosongkan setelah Task selesai dan sebelum merender ulang. Contoh Microtasks termasuk Microtasks dan Antrean Microtask juga disebut sebagai Pekerjaan dan Antrean Pekerjaan Putaran AcaraTerakhir, Event Loop adalah loop yang terus berjalan dan memeriksa apakah Call Stack kosong. Itu memproses Tugas dan Tugas Mikro, dengan menempatkannya di Call Stack satu per satu dan juga mengontrol proses rendering. Itu terdiri dari empat langkah kunci
Contoh praktisUntuk lebih memahami Event Loop, mari kita lihat contoh praktis, menggabungkan semua konsep di atas Tujuan saya dengan artikel ini adalah untuk mengajari Anda cara kerja JavaScript di browser. Meskipun saya telah bekerja dengan JavaScript sepanjang karier saya, saya tidak memahami cara kerjanya sampai saat ini Saya masih lupa bagaimana ini bekerja dari waktu ke waktu. Itu sebabnya saya menulis artikel ini. Saya harap ini akan membuat Anda memahami konsep-konsep ini juga
Cara kerja JavaScript di browserSebelum saya menyelami penjelasan setiap topik, saya ingin Anda melihat ikhtisar tingkat tinggi yang saya buat ini, yang merupakan abstraksi tentang bagaimana JavaScript berinteraksi dengan browser Jangan khawatir jika Anda tidak tahu arti semua istilah tersebut. Saya akan membahasnya masing-masing di bagian ini Perhatikan bagaimana sebagian besar hal dalam grafik bukan bagian dari bahasa JavaScript itu sendiri. API Web, antrean panggilan balik, dan loop peristiwa adalah semua fitur yang disediakan browser Representasi NodeJS akan terlihat serupa, tetapi dalam artikel ini, saya akan fokus pada cara kerja JavaScript di browser Tumpukan panggilanAnda mungkin pernah mendengar bahwa JavaScript adalah single-threaded. Tapi apa artinya ini? JavaScript dapat melakukan satu hal pada satu waktu karena hanya memiliki satu tumpukan panggilan Tumpukan panggilan adalah mekanisme yang membantu penerjemah JavaScript untuk melacak fungsi yang dipanggil skrip Setiap kali skrip atau fungsi memanggil suatu fungsi, itu ditambahkan ke bagian atas tumpukan panggilan. Setiap kali fungsi keluar, juru bahasa menghapusnya dari tumpukan panggilan Suatu fungsi keluar melalui pernyataan pengembalian atau dengan mencapai akhir ruang lingkup Saya membuat visualisasi kecil ini agar lebih mudah dipahami const addOne = (value) => value + 1;_
Lebih banyak artikel yang mungkin menarik bagi Anda
|