BackgroundFetchRegistration

Интерфейс BackgroundFetchRegistration из Background Fetch API представляет собой отдельный фоновый запрос.

Экземпляр BackgroundFetchRegistration возвращает метод BackgroundFetchManager.fetch() или метод BackgroundFetchManager.get() и, следовательно, не имеет конструктора.

EventTarget BackgroundFetchRegistration

Свойства

Для удобства использования, следующие свойства, скопированные из экземпляра BackgroundFetchRegistration, доступны синхронно:

BackgroundFetchRegistration.idТолько для чтения

Строка, содержащая идентификатор фонового запроса.

BackgroundFetchRegistration.uploadTotalТолько для чтения

number содержащий общее количество байт для загрузки.

BackgroundFetchRegistration.uploadedТолько для чтения

number содержащий количество успешно отправленных байт, изначально 0.

BackgroundFetchRegistration.downloadTotalТолько для чтения

number содержащий общий размер загрузки в байтах. Это значение устанавливается при регистрации запроса, или 0.

BackgroundFetchRegistration.downloadedТолько для чтения

number содержащий количество скачанных байт, изначально 0.

BackgroundFetchRegistration.resultТолько для чтения

Изначально возвращает пустую строку, а по завершению запросо либо "success", либо "failure".

BackgroundFetchRegistration.failureReasonТолько для чтения

Возвращает одну из следующих строк:

""

Запрос не завершён, либо завершился успешно.

"aborted"

Операция была отменена пользователем, либо был вызван abort().

"bad-status"

Статус ответа не-ok (статус не входящий в диапазон 200-299).

"fetch-error"

Запрос завершился неудачей по какой-либо другой причине, например CORS, или отсутствие сети.

"quota-exceeded"

Во время операции была достигнута квота хранилища.

"download-total-exceeded"

Превышен downloadTotal. Его значение устанавливается при регистрации запроса.

BackgroundFetchRegistration.recordsAvailableТолько для чтения

boolean указывает, установлен ли флаг recordsAvailable.

Методы

BackgroundFetchRegistration.abort()

Прерывает фоновый запрос. Возвращает Promise, результатом обработки которого является true, если запрос был успешно прерван.

BackgroundFetchRegistration.match()

Возвращает один объект BackgroundFetchRecord, который является первым совпадением по аргументам.

BackgroundFetchRegistration.matchAll()

Возвращает Promise, результатом обработки которого является массив объектов BackgroundFetchRecord, содержащих запросы и ответы.

События

Слушайте эти события используя addEventListener() или назначая слушатель события свойству oneventname.

progress

Срабатывает при изменении любого из следующих свойств: uploaded, downloaded, result or failureReason.

Примеры

Следующий пример создаёт BackGroundFetchRegistration с идентификатором "my-fetch" и присваивает его переменной bgFetch.

js
navigator.serviceWorker.ready.then(async (swReg) => {
  const bgFetch = await swReg.backgroundFetch.fetch(
    "my-fetch",
    ["/ep-5.mp3", "ep-5-artwork.jpg"],
    {
      title: "Episode 5: Interesting things.",
      icons: [
        {
          sizes: "300x300",
          src: "/ep-5-icon.png",
          type: "image/png",
        },
      ],
      downloadTotal: 60 * 1024 * 1024,
    },
  );
});

Вывод id в консоль возвращает "my-fetch".

js
console.log(bgFetch.id); // "my-fetch"

Метод match() можно использовать для поиска конкретного BackgroundFetchRecord из тех, что были зарегистрированы.

js
bgFetch.match("/ep-5.mp3").then(async (record) => {
  if (!record) {
    console.log("No record found");
    return;
  }

  console.log(`Запрос`, record.request);
  const response = await record.responseReady;
  console.log(`И ответ`, response);
});

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

Specification
Background Fetch
# background-fetch-registration

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

BCD tables only load in the browser