FetchEvent:handled 屬性

Baseline 已廣泛支援

此功能已成熟,並可在多種裝置和瀏覽器版本上執行。自 2022 年 9 月起,所有瀏覽器都已支援此功能。

注意:此功能僅在 Service Workers 中可用。

FetchEvent 介面的 handled 屬性返回一個 Promise,指示該事件是否已被 fetch 演算法處理。此屬性允許在瀏覽器消耗響應後執行程式碼,通常與 waitUntil() 方法一起使用。

一個 Promise,在事件尚未處理時處於 pending 狀態,一旦處理完成則 fulfilled。

示例

js
addEventListener("fetch", (event) => {
  event.respondWith(
    (async function () {
      const response = await doCalculateAResponse(event.request);

      event.waitUntil(
        (async function () {
          await doSomeAsyncStuff(); // optional

          // Wait for the event to be consumed by the browser
          await event.handled;

          return doFinalStuff(); // Finalize AFTER the event has been consumed
        })(),
      );

      return response;
    })(),
  );
});

規範

規範
Service Workers
# dom-fetchevent-handled

瀏覽器相容性

另見