Macrotask là gì?

Noun Javascript
macro-task task
Tác vụ vĩ mô

Trong ngôn ngữ lập trình Javascript, tác vụ vĩ mô (macrotask) đại diện cho một số công việc độc lập và rời rạc. Quá trình thực thi mã JavaScript cũng là tác vụ vĩ mô (macrotask). Các tác vụ vĩ mô (macrotask) bao gồm phân tích cú pháp (parsing) HTML, tạo DOM, thực thi mã JavaScript của luồng chính (main thread) và các sự kiện (event) khác như tải trang (page loading), đầu vào, sự kiện mạng (network event), sự kiện hẹn giờ (timer event), v.v.

Hàng đợi của tác vụ vĩ mô (macrotask queue) thường được coi là giống như hàng đợi tác vụ (task queue) hoặc hàng đợi sự kiện (event queue). Tuy nhiên, hàng đợi của tác vụ vĩ mô hoạt động giống như hàng đợi tác vụ. Sự khác biệt nhỏ duy nhất giữa hai hàng đợi là hàng đợi tác vụ được sử dụng cho các câu lệnh đồng bộ (synchronous) trong khi hàng đợi của tác vụ vĩ mô được sử dụng cho các câu lệnh không đồng bộ (asynchronous).

Trong JavaScript, không có mã nào được phép thực thi cho đến khi một sự kiện xảy ra. Điều đáng nói là việc thực thi một đoạn mã JavaScript tự nó là một tác vụ vĩ mô (macrotask). Sự kiện được thêm vào hàng đợi (queue) như một tác vụ vĩ mô (macrotask). Khi một tác vụ vĩ mô (macrotask) hiện diện trong hàng đợi của tác vụ vĩ mô (macrotask queue) đang được thực thi, các sự kiện mới có thể được đăng ký và lần lượt được tạo và thêm vào hàng đợi.

Tác vụ vĩ mô (macrotask) được thêm vào hàng đợi của tác vụ vĩ mô khi:

  • Một chương trình JavaScript mới hoặc chương trình con (subprogram) được thực thi.
  • Sự kiện kích hoạt, thêm hàm callback (callback function) của sự kiện vào hàng đợi của tác vụ vĩ mô.
  • Timeout hoặc interval được tạo bằng setTimeout() hoặc setInterval() làm hàm callback tương ứng được thêm vào hàng đợi tác vụ.
Learning English Everyday