Spec-Zone.ru › Web APIs

Расширяемый событие

Базовая Широко доступная

Эта функция хорошо зарекомендовала себя и работает во многих устройствах и версиях браузеров. Она доступна в браузерах с апреля 2018 года.

  • Подробнее
  • Полная совместимость
  • Отправить отзыв

Примечание: Эта функция доступна только в Сервисных рабочих процессах.

Интерфейс ExtendableEvent расширяет срок действия событий install и activate, которые генерируются на глобальном уровне в рамках жизненного цикла сервисного рабочего процесса. Это гарантирует, что любые функциональные события (например, FetchEvent) не будут генерироваться до тех пор, пока не будут обновлены схемы базы данных и удалены устаревшие записи кеша.

Если waitUntil() вызывается вне обработчика ExtendableEvent, браузер должен сгенерировать InvalidStateError; также обратите внимание, что несколько вызовов будут накапливаться, и полученные обещания будут добавлены в список обещаний продления срока действия.

Этот интерфейс наследуется от интерфейса Event.

Событие Расширяемый событие

Примечание: Этот интерфейс доступен только когда глобальная область видимости — ServiceWorkerGlobalScope. Он недоступен, когда это Window или область видимости другого типа рабочего процесса.

Конструктор

ExtendableEvent()

Создает новый объект ExtendableEvent.

Свойства экземпляра

Не реализует каких-либо специфических свойств, но наследует свойства от своего родителя, Event.

Методы экземпляра

Наследует методы от своего родителя, Event.

ExtendableEvent.waitUntil()

Расширяет срок действия события. Предполагается, что он вызывается в обработчике события install для рабочего процесса installing и в обработчике события activate для рабочего процесса active.

Примеры

Этот фрагмент кода взят из примера сервисного рабочего процесса предзагрузки (см. живой пример предзагрузки.) Код вызывает ExtendableEvent.waitUntil() в oninstall, откладывая обработку рабочего процесса ServiceWorkerRegistration.installing как установленного до успешного разрешения переданного обещания. Обещание разрешается, когда все ресурсы извлечены и помещены в кеш, или при возникновении любого исключения.

Фрагмент кода также демонстрирует лучший подход к версионированию кешей, используемых сервисным рабочим процессом. Хотя в этом примере только один кеш, тот же подход применим и для нескольких кешей. Он отображает краткое обозначение идентификатора кеша в конкретное версионированное имя кеша.

Примечание: В Chrome, сообщения протоколирования отображаются через интерфейс «Просмотреть» для соответствующего сервисного рабочего процесса, доступного по адресу chrome://serviceworker-internals.

const CACHE_VERSION = 1;
const CURRENT_CACHES = {
  prefetch: `prefetch-cache-v${CACHE_VERSION}`,
};

self.addEventListener("install", (event) => {
  const urlsToPrefetch = [
    "./static/pre_fetched.txt",
    "./static/pre_fetched.html",
    "https://www.chromium.org/_/rsrc/1302286216006/config/customLogo.gif",
  ];

  console.log(
    "Handling install event. Resources to pre-fetch:",
    urlsToPrefetch,
  );

  event.waitUntil(
    caches
      .open(CURRENT_CACHES["prefetch"])
      .then((cache) => {
        return cache
          .addAll(
            urlsToPrefetch.map((urlToPrefetch) => {
              return new Request(urlToPrefetch, { mode: "no-cors" });
            }),
          )
          .then(() => {
            console.log("All resources have been fetched and cached.");
          });
      })
      .catch((error) => {
        console.error("Pre-fetching failed:", error);
      }),
  );
});

Примечание: При извлечении ресурсов крайне важно использовать {mode: 'no-cors'} если есть вероятность, что ресурсы предоставляются сервером, не поддерживающим CORS. В этом примере, www.chromium.org не поддерживает CORS.

Спецификации

Спецификация
Сервисные рабочие процессы
# extendableevent-interface

Совместимость с браузерами

Рабочие столы Мобильные устройства
Chrome Edge Firefox Opera Safari Chrome Android Firefox для Android Opera Android Safari на iOS Samsung Internet WebView Android
ExtendableEvent 41 17 44 24 11.1 41 44 24 11.3 4.0 41
ExtendableEvent 40 17 44 24 11.1 40 44 24 11.3 4.0 40
waitUntil 40 17 44 24 11.1 40 44 24 11.3 4.0 40

См. также

  • Использование сервисных рабочих процессов
  • Базовый пример кода сервисных рабочих процессов
  • Использование веб-рабочих процессов

© 2005–2024 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/API/ExtendableEvent

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API