diff options
author | Peter Bengtsson <mail@peterbe.com> | 2020-12-08 14:42:52 -0500 |
---|---|---|
committer | Peter Bengtsson <mail@peterbe.com> | 2020-12-08 14:42:52 -0500 |
commit | 074785cea106179cb3305637055ab0a009ca74f2 (patch) | |
tree | e6ae371cccd642aa2b67f39752a2cdf1fd4eb040 /files/ru/web/api/fetchevent/index.html | |
parent | da78a9e329e272dedb2400b79a3bdeebff387d47 (diff) | |
download | translated-content-074785cea106179cb3305637055ab0a009ca74f2.tar.gz translated-content-074785cea106179cb3305637055ab0a009ca74f2.tar.bz2 translated-content-074785cea106179cb3305637055ab0a009ca74f2.zip |
initial commit
Diffstat (limited to 'files/ru/web/api/fetchevent/index.html')
-rw-r--r-- | files/ru/web/api/fetchevent/index.html | 103 |
1 files changed, 103 insertions, 0 deletions
diff --git a/files/ru/web/api/fetchevent/index.html b/files/ru/web/api/fetchevent/index.html new file mode 100644 index 0000000000..5c529c772c --- /dev/null +++ b/files/ru/web/api/fetchevent/index.html @@ -0,0 +1,103 @@ +--- +title: FetchEvent +slug: Web/API/FetchEvent +translation_of: Web/API/FetchEvent +--- +<p>{{APIRef("Service Workers API")}}</p> + +<p><span class="seoSummary">Это тип событий <code>fetch</code>, обрабатываемых в {{domxref("ServiceWorkerGlobalScope", "глобальном контексте service worker", "", 1)}}. Даноое событие содержит данные о запросе, включая его цель. Оно предоставляет метод {{domxref("FetchEvent.respondWith", "event.respondWith()")}}, с помощью которого service worker может ответить на запрос.</span></p> + +<h2 id="Конструктор">Конструктор</h2> + +<dl> + <dt>{{domxref("FetchEvent.FetchEvent()", "FetchEvent()")}}</dt> + <dd>Создает новый объект <code>FetchEvent</code>. Как правило, данный конструктор не используется. Браузер самостоятельно создает данные объекты и передает их в обработчик событий <code>fetch</code>.</dd> +</dl> + +<h2 id="Свойства">Свойства</h2> + +<p><em>Данный класс наследует все свойства класса {{domxref("Event")}}</em>.</p> + +<dl> + <dt>{{domxref("fetchEvent.clientId")}} {{readonlyInline}}</dt> + <dd>{{domxref("Client.id", "Идентификатор")}} {{domxref("Client", "клиента")}} того же источника, отправившего запрос.</dd> + <dt>{{domxref("fetchEvent.preloadResponse")}} {{readonlyinline}}</dt> + <dd>{{jsxref("Promise", "Промис")}} для {{domxref("Response", "запроса")}}, или же пустой промис, если не произошла навигация или {{domxref("NavigationPreloadManager", "предзагрузка навигации", "", 1)}} отключена.</dd> + <dt>{{domxref("fetchEvent.request")}} {{readonlyInline}}</dt> + <dd>Запрос ({{domxref("Request")}}) от браузера.</dd> + <dt>{{domxref("fetchEvent.replacesClientId")}} {{readonlyInline}}</dt> + <dd>{{domxref("Client.id", "Идентификатор")}} {{domxref("Client", "клиента")}}, заменяемого при навигации.</dd> + <dt>{{domxref("fetchEvent.resultingClientId")}} {{readonlyInline}}</dt> + <dd>{{domxref("Client.id", "Идентификатор")}} {{domxref("Client", "клиента")}}, заменившего прошлый клиент при навигации.</dd> +</dl> + +<h2 id="Методы">Методы</h2> + +<p><em>Данный класс наследует методы класса </em><em>{{domxref("ExtendableEvent")}}</em>.</p> + +<dl> + <dt>{{domxref("fetchEvent.respondWith()")}}</dt> + <dd>Перехватывает запрос и отпраляет промис с ответом.</dd> + <dt>{{domxref("extendableEvent.waitUntil()")}}</dt> + <dd> + <p>Продлевает выполнение обработчика события до завершения переданного промиса. Используется чтобы уведомить браузер о событии, продолжающемся после отправки ответа, таком как обновление кеша или потоковая передача.</p> + </dd> +</dl> + +<h2 id="Примеры">Примеры</h2> + +<p>В данном примере все не-GET запросы будут обрабатываться стандартными средствами браузера. В случае GET запросов, service worker попробует найти ответ в кеше, а в случае его отсутствия получит данные с сервера. Также, он асинхронно обновит данные в кеше.</p> + +<pre class="brush: js">self.addEventListener('fetch', event => { + // В случае не-GET запроса браузер должен сам обрабатывать его + if (event.request.method != 'GET') return; + + // Обрабатываем запрос с помощью логики service worker + event.respondWith(async function() { + // Пытаемся получить ответ из кеша. + const cache = await caches.open('dynamic-v1'); + const cachedResponse = await cache.match(event.request); + + if (cachedResponse) { + // Если кеш был найден, возвращаем данные из него + // и запускаем фоновое обновление данных в кеше. + event.waitUntil(cache.add(event.request)); + return cachedResponse; + } + + // В случае, если данные не были найдены в кеше, получаем их с сервера. + return fetch(event.request); + }()); +});</pre> + +<h2 id="Спецификации">Спецификации</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Спецификация</th> + <th scope="col">Статус</th> + <th scope="col">Комментарии</th> + </tr> + <tr> + <td>{{SpecName('Service Workers', '#dom-fetchevent-fetchevent', 'FetchEvent()')}}</td> + <td>{{Spec2('Service Workers')}}</td> + <td>Изначальное определение.</td> + </tr> + </tbody> +</table> + +<h2 id="Совместимость">Совместимость</h2> + +<div> + + +<p>{{Compat("api.FetchEvent")}}</p> +</div> + +<h2 id="Смотрите_также">Смотрите также</h2> + +<ul> + <li>{{jsxref("Promise")}}</li> + <li><a href="/en-US/docs/Web/API/Fetch_API">Fetch API</a></li> +</ul> |