2012-10-08 14 views

Trả lời

8

Mô hình thực thi trình duyệt dựa trên khái niệm "vòng lặp sự kiện". Chỉ có một sự kiện phục vụ luồng (nhẹ sự đơn giản hóa). Khi một sự kiện xảy ra, các trình xử lý được gọi theo thứ tự.

Ajax chỉ là một cơ chế gây ra các sự kiện nhất định. Thiết lập một yêu cầu HTTP là đồng bộ, nhưng chỉ cần thiết lập nó. Trình duyệt đáp ứng với các giao tiếp mạng đại diện cho dữ liệu trả về từ máy chủ bằng cách kích hoạt các sự kiện khi điều đó xảy ra.

Trình duyệt hiện đại có phần phức tạp hơn ở chỗ mỗi cửa sổ có thể có quy trình riêng (hoặc một số cấu trúc "chuỗi" cấp hệ thống khác, nói chung). Ngoài ra, tính năng "công nhân web" mới cho phép ngăn các ngăn giống như luồng riêng biệt chạy đồng thời.

+0

+1, câu trả lời hoàn hảo, rõ ràng và súc tích. Chỉ cần thêm 1: Theo cách nào đó, việc triển khai JS là một luồng đơn thực sự là một trình duyệt cụ thể. Nhưng cho đến bây giờ, không thực hiện JS (mà tôi biết) hỗ trợ đa luồng như vậy. Về lý thuyết, có thể, nhưng nhược điểm là rất lớn: thực tế là JS được sử dụng bởi ppl người không có sự hiểu biết thực sự về các khái niệm cốt lõi của phát triển (đa luồng), kết hợp với thực tế là nhiều người trong số những người viết JS thực tế _abuse_ ngôn ngữ. Thành thật mà nói, sự gia tăng của Cthulu sẽ có vẻ giống như một bữa ăn ngoài trời so với việc lướt web đến các trang web nghiệp dư. Không thiếu tôn trọng, mặc dù –

+0

Lập trình nghiệp dư là tuyệt vời, tất cả chúng ta đều bắt đầu như thế, nhưng nghĩ xem chúng ta có thể làm gì với máy của mình nếu chúng ta có những công cụ nghiêm túc từ ngày đầu? Trên web, nó không chỉ là máy của bạn mà bạn đang phá hoại ... Về cơ bản, hãy để JS là nó là gì: một ngôn ngữ tuyệt vời, bắt đầu dễ dàng nhưng có cấu trúc rất gọn gàng cho những ai sẵn sàng tìm kiếm chúng. Có quá nhiều thứ để biết rằng luồng có thể chờ đợi, 'cho đến khi tìm hiểu về bao đóng, lambda, ủy quyền, phạm vi, v.v ... –

+2

@EliasVanOotegem cảm ơn! Vâng "Web Worker" có thể được thực hiện sao cho mã của họ chạy đồng thời với mã cho trang (và các công nhân khác), nhưng vì mô hình truyền thông chủ đề rất nghiêm ngặt (như Erlang xử lý hầu như) nó tương đối an toàn. – Pointy