Fungsi, Thread, dan Eksekusi Asinkron JavaScript
Anda perlu memahami cara kerja JavaScript di balik layar.
Berikut adalah rincian mengenai fungsi, proses, thread, dan gaya eksekusi.
Jenis-jenis Fungsi JavaScript
- Named Function: Menggunakan nama tertentu. Ini memudahkan debugging.
- Anonymous Function: Tidak memiliki nama. Anda sering menggunakannya sebagai callback.
- Function Expression: Anda menetapkan sebuah fungsi ke dalam variabel.
- Arrow Function: Sintaks yang lebih singkat menggunakan simbol =>.
- IIFE: Sebuah Immediately Invoked Function Expression. Ia langsung berjalan segera setelah Anda mendefinisikannya.
Proses vs. Thread
Sebuah Proses adalah program yang sedang berjalan di komputer Anda.
- Setiap proses memiliki memorinya sendiri.
- Jika satu proses crash, proses lainnya tetap berjalan.
- Contoh: Chrome dan Spotify adalah proses yang terpisah.
Sebuah Thread adalah unit kecil di dalam sebuah proses.
- Thread berbagi memori yang sama.
- Mereka memungkinkan satu program untuk melakukan banyak hal sekaligus.
- Contoh: Di dalam Chrome, satu thread merender halaman sementara thread lainnya menangani klik mouse Anda.
Sinkron vs. Asinkron
JavaScript bersifat single-threaded. Ia menangani satu tugas pada satu waktu menggunakan call stack.
Eksekusi Sinkron:
- Tugas berjalan satu demi satu.
- Setiap tugas menunggu tugas sebelumnya selesai.
- Tugas yang lambat akan menghambat kode Anda untuk berjalan.
Eksekusi Asinkron:
- Tugas berjalan di latar belakang.
- Kode tidak berhenti saat menunggu sebuah tugas selesai.
- Ini menggunakan Web APIs, Callback Queue, dan Event Loop.
Cara kerja Asinkron:
- JavaScript mengirimkan tugas (seperti timer) ke Web API.
- Kode utama terus berjalan.
- Setelah tugas selesai, ia pindah ke Callback Queue.
- Event Loop memindahkannya ke Call Stack saat stack tersebut kosong.
Hal ini menjaga aplikasi web Anda tetap cepat dan responsif.