JS runtime (thời gian chạy của JavaScript) xử lý bất đồng bộ (asynchronous) và đồng bộ (synchronous) theo cách khác nhau.
Khi JavaScript chạy trên trình duyệt, runtime sử dụng mô hình sự kiện (event-driven) để xử lý các sự kiện và tương tác người dùng. Khi có một sự kiện xảy ra, runtime sẽ đưa sự kiện đó vào hàng đợi sự kiện (event queue) và tiếp tục thực hiện các công việc khác. Khi runtime hoàn thành các công việc hiện tại, nó sẽ lấy sự kiện đầu tiên từ hàng đợi sự kiện và xử lý nó.
Đối với các tác vụ bất đồng bộ như gọi API, tải tệp tin, hoặc thực hiện các tác vụ mạng, JavaScript sử dụng các hàm bất đồng bộ như setTimeout, setInterval, fetch, XMLHttpRequest, hoặc Promise
. Khi gọi các hàm bất đồng bộ này, runtime sẽ không chờ đợi kết quả trả về mà tiếp tục thực hiện các công việc khác. Khi kết quả trả về, runtime sẽ đưa nó vào hàng đợi sự kiện và xử lý sau.
Đối với các tác vụ đồng bộ, JavaScript sử dụng cơ chế gọi lại (callback) hoặc
async/await
để xử lý. Khi gọi một hàm đồng bộ, runtime sẽ chờ đợi hàm đó hoàn thành trước khi tiếp tục thực hiện các công việc khác. Điều này có thể gây trì hoãn (blocking) trong quá trình thực thi.
Tuy nhiên, để tránh trì hoãn quá lâu và đảm bảo ứng dụng vẫn phản hồi, JavaScript runtime sử dụng mô hình bất đồng bộ và sự kiện để xử lý các tác vụ dài hạn. Bằng cách này, runtime có thể tiếp tục thực hiện các công việc khác trong khi đợi kết quả trả về từ các tác vụ bất đồng bộ.
0 nhận xét:
Post a Comment