Hình sau được lấy từ Chương 3 của cuốn sách Secrets of the JavaScript Ninja của Jon Resig. Ở đây tác giả giải thích vòng lặp sự kiện trình duyệt.Khái niệm chuỗi đơn JavaScript chạy trong trình duyệt
Cuốn sách có nói điều này:
Điều quan trọng cần lưu ý rằng cơ chế trình duyệt mà đặt sự kiện vào hàng đợi là bên ngoài để mô hình vòng lặp sự kiện này. Việc xử lý cần thiết để xác định thời điểm sự kiện đã xảy ra và đẩy chúng lên hàng đợi sự kiện không tham gia vào chuỗi đang xử lý các sự kiện .
Vì vậy, câu hỏi của tôi là đúng khi nói rằng JavaScript trong trình duyệt là đơn luồng? Tôi hỏi câu hỏi này bởi vì rõ ràng hai nhiệm vụ riêng biệt (xử lý các sự kiện và sự kiện xếp hàng đang diễn ra song song ở đây).
Đặt câu hỏi trên (có thể) thú vị hơn có thể là tác động của cái gọi là ** callbacks ngay lập tức ** (như được đề xuất trong [câu trả lời này] (http://stackoverflow.com/a/2734311/1711186)). Trong ngắn như vậy gọi lại ** ** ngay lập tức sẽ được mã Javascript chạy, trong khi mã khác bị chặn bởi một tuyên bố chặn (tức là 'alert()') vẫn chưa [chạy đến hoàn thành] (https://developer.mozilla.org /en-US/docs/Web/JavaScript/Guide/EventLoop#.22Run-to-completion.22). Bằng cách này, dường như nhiệm vụ thứ hai "xếp hàng sự kiện" có thể giới thiệu các vấn đề đa luồng (tức là tính xác định). Câu hỏi hay! – humanityANDpeace
có thể trùng lặp của [JavaScript có được đảm bảo là đơn luồng không?] (Http://stackoverflow.com/questions/2734025/is-javascript-guaranteed-to-be-single-threaded) – Liam