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 with JavaScript enabled. Enable JavaScript to view data.