aboutsummaryrefslogtreecommitdiff
path: root/files/ru/web/api/extendableevent/waituntil
diff options
context:
space:
mode:
authorPeter Bengtsson <mail@peterbe.com>2020-12-08 14:42:52 -0500
committerPeter Bengtsson <mail@peterbe.com>2020-12-08 14:42:52 -0500
commit074785cea106179cb3305637055ab0a009ca74f2 (patch)
treee6ae371cccd642aa2b67f39752a2cdf1fd4eb040 /files/ru/web/api/extendableevent/waituntil
parentda78a9e329e272dedb2400b79a3bdeebff387d47 (diff)
downloadtranslated-content-074785cea106179cb3305637055ab0a009ca74f2.tar.gz
translated-content-074785cea106179cb3305637055ab0a009ca74f2.tar.bz2
translated-content-074785cea106179cb3305637055ab0a009ca74f2.zip
initial commit
Diffstat (limited to 'files/ru/web/api/extendableevent/waituntil')
-rw-r--r--files/ru/web/api/extendableevent/waituntil/index.html77
1 files changed, 77 insertions, 0 deletions
diff --git a/files/ru/web/api/extendableevent/waituntil/index.html b/files/ru/web/api/extendableevent/waituntil/index.html
new file mode 100644
index 0000000000..136770f499
--- /dev/null
+++ b/files/ru/web/api/extendableevent/waituntil/index.html
@@ -0,0 +1,77 @@
+---
+title: ExtendableEvent.waitUntil()
+slug: Web/API/ExtendableEvent/waitUntil
+translation_of: Web/API/ExtendableEvent/waitUntil
+---
+<p>{{APIRef("Service Workers API")}}</p>
+
+<p><span class="seoSummary">Метод <code><strong>ExtendableEvent.waitUntil()</strong></code> сообщает диспетчеру событий, что выполняется действие. Также этот метод может быть использован, для того чтобы определить было ли то действие успешным. В рамках service workers, <code>waitUntil()</code> сообщает браузеру, что действие продолжается пока обещание не завершится (<em>promise settles</em>) и браузер не должен прерывать service worker если он хочет, чтобы это действие завершилось.</span></p>
+
+<p>События <code>install</code> в {{domxref("ServiceWorkerGlobalScope", "service workers")}} используют <code>waitUntil()</code> чтобы задержать service worker в {{domxref("ServiceWorkerRegistration.installing", "installing")}} фазе пока не завершатся задачи. Если обещание переданное в <code>waitUntil()</code> отклоняется, установка считается неудачной и устанавлеваемый service worker отбрасывается.  В первую очередь это используется для гарантии того, что service worker не рассматривается как установленный (installed), пока все основные кэши на которые он зависит успешно не заполнены.</p>
+
+<p>События <code>activate</code> в {{domxref("ServiceWorkerGlobalScope", "service workers")}} используют <code>waitUntil()</code> для размещения в буфере функциональных событий таких как <code>fetch</code> и <code>push</code> пока обещание переданное в <code>waitUntil()</code> не завершится успешно. Это дает service worker время, чтобы обновить схемы базы данных и удалить устаревшие {{domxref("Cache", "caches")}}, таким образом другие события могут полагаться на полностью обновленное состояние.</p>
+
+<p>Метод <code>waitUntil()</code> должен быть изначально вызван внутри события обратного вызова (<em>event callback</em>), но после этого он может быть вызван множество раз, до тех пор пока все обещания переданные в него не завершатся успешно.</p>
+
+<div class="note">
+<p><strong>Примечание</strong>: Поведение описанное в параграфе выше, было исправлено в Firefix 43 (смотрите {{bug(1180274)}}).</p>
+</div>
+
+<h2 id="Синтаксис">Синтаксис</h2>
+
+<pre class="syntaxbox notranslate"><em>extendableEvent</em>.waitUntil(<em>promise</em>);</pre>
+
+<h3 id="Параметры">Параметры</h3>
+
+<p>{{jsxref("Promise")}}.</p>
+
+<h3 id="Возвращаемое_значение">Возвращаемое значение</h3>
+
+<p><code>undefined</code>.</p>
+
+<h2 id="Примеры">Примеры</h2>
+
+<p>Использование <code>waitUntil()</code> внутри события <code>install</code> в service worker:</p>
+
+<pre class="brush: js;highlight:[10] notranslate">addEventListener('install', event =&gt; {
+ const preCache = async () =&gt; {
+    const cache = await caches.open('static-v1');
+    return cache.addAll([
+      '/',
+  '/about/',
+  '/static/styles.css'
+    ]);
+  };
+ event.waitUntil(preCache());
+});</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-extendableevent-waituntil', 'waitUntil()')}}</td>
+ <td>{{Spec2('Service Workers')}}</td>
+ <td>Изначальное определение</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Совместимость_с_браузерами">Совместимость с браузерами</h2>
+
+<div class="hidden">Таблица совместимости на этой странице сгенерирована из структурированных данных. Если вы хотите внести свой вклад в данные, пожалуйста посмотрите на <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> и отправьте нам pull request.</div>
+
+<p>{{Compat("api.ExtendableEvent.waitUntil")}}</p>
+
+<h2 id="Смотрите_также">Смотрите также</h2>
+
+<ul>
+ <li><a href="/en-US/docs/Web/API/Service_Worker_API/Using_Service_Workers">Использование Service Workers</a></li>
+ <li><a class="external external-icon" href="https://jakearchibald.github.io/isserviceworkerready/">Готов ли ServiceWorker?</a></li>
+ <li>{{jsxref("Promise")}}</li>
+</ul>