TaskSignal: sự kiện prioritychange

Limited availability

This feature is not Baseline because it does not work in some of the most widely-used browsers.

Note: This feature is available in Web Workers.

Sự kiện prioritychange được gửi đến TaskSignal nếu ưu tiên của nó thay đổi.

Cú pháp

Sử dụng tên sự kiện trong các phương thức như addEventListener(), hoặc đặt thuộc tính trình xử lý sự kiện.

js
addEventListener("prioritychange", (event) => { })

onprioritychange = (event) => { }

Loại sự kiện

Một TaskPriorityChangeEvent. Kế thừa từ Event.

Event TaskPriorityChangeEvent

Thuộc tính sự kiện

TaskPriorityChangeEvent.previousPriority

Cho biết ưu tiên trước đó của tác vụ (trước khi nó được thay đổi). Ưu tiên mới/được cập nhật được đọc từ event.target.priority (TaskSignal.priority).

Ví dụ

Ví dụ dưới đây cho thấy cách lắng nghe sự kiện prioritychange trên TaskSignal.

Đầu tiên chúng ta tạo bộ điều khiển và thêm trình lắng nghe sự kiện vào tín hiệu của nó. Khi xử lý sự kiện, chúng ta sử dụng previousPriority trên sự kiện để lấy ưu tiên ban đầu và TaskSignal.priority trên đích sự kiện để lấy ưu tiên mới/hiện tại.

Sau đó tác vụ được đăng, truyền tín hiệu vào, và ngay sau đó chúng ta thay đổi ưu tiên.

js
if ("scheduler" in this) {
  // Declare a TaskController, setting its signal priority to 'user-blocking'
  const controller = new TaskController({ priority: "user-blocking" });

  // Listen for 'prioritychange' events on the controller's signal.
  controller.signal.addEventListener("prioritychange", (event) => {
    const previousPriority = event.previousPriority;
    const newPriority = event.target.priority;
    myLog(`Priority changed from ${previousPriority} to ${newPriority}.`);
  });

  // Post task using the controller's signal.
  // The signal priority sets the initial priority of the task
  scheduler.postTask(
    () => {
      myLog("Task 1");
    },
    { signal: controller.signal },
  );

  // Change the priority to 'background' using the controller
  controller.setPriority("background");
}

Note: Mã trên sử dụng hàm ghi nhật ký tùy chỉnh myLog() để ghi vào vùng văn bản bên dưới. Điều này bị ẩn vì nó không liên quan đến ví dụ.

Đầu ra bên dưới cho thấy ưu tiên của tác vụ đã thay đổi từ user-blocking sang background. Điều này xảy ra trước khi tác vụ được thực thi, nhưng cũng có thể xảy ra khi tác vụ đang chạy.

Thông số kỹ thuật

Specification
Prioritized Task Scheduling
# eventdef-tasksignal-prioritychange
Prioritized Task Scheduling
# dom-tasksignal-onprioritychange

Tương thích trình duyệt