JavaScript chạy trên một luồng duy nhất, nên nó chỉ có thể làm một việc tại một thời điểm. Event loop là thứ cho phép nó xử lý công việc async mà không bị chặn: nó chạy call stack, và khi stack rỗng, nó kéo các callback từ các hàng đợi.
Có hai hàng đợi với độ ưu tiên khác nhau:
