- From: Stephan Bijzitter <notifications@github.com>
- Date: Mon, 29 Mar 2021 09:57:17 -0700
- To: w3c/ServiceWorker <ServiceWorker@noreply.github.com>
- Cc: Subscribed <subscribed@noreply.github.com>
- Message-ID: <w3c/ServiceWorker/issues/799/809543196@github.com>
For people who're reading this now (through Google search), the `workbox-window` package now includes `active` and `controlling` promises which can be used. Usage: ``` // somewhere const workbox = new Workbox('/service-worker.js'); // somewhere else await workbox.active await workbox.controlling ``` Excerpt from the source code at time of writing: ``` /** * Resolves to the service worker registered by this instance as soon as it * is active. If a service worker was already controlling at registration * time then it will resolve to that if the script URLs (and optionally * script versions) match, otherwise it will wait until an update is found * and activates. * * @return {Promise<ServiceWorker>} */ get active() { return this._activeDeferred.promise; } /** * Resolves to the service worker registered by this instance as soon as it * is controlling the page. If a service worker was already controlling at * registration time then it will resolve to that if the script URLs (and * optionally script versions) match, otherwise it will wait until an update * is found and starts controlling the page. * Note: the first time a service worker is installed it will active but * not start controlling the page unless `clients.claim()` is called in the * service worker. * * @return {Promise<ServiceWorker>} */ get controlling() { return this._controllingDeferred.promise; } ``` Although it is a very small letdown that there's no `workbox.ready` alias for `navigator.serviceWorker.ready`, to keep it all nicely tucked into one place 😇 -- You are receiving this because you are subscribed to this thread. Reply to this email directly or view it on GitHub: https://github.com/w3c/ServiceWorker/issues/799#issuecomment-809543196
Received on Monday, 29 March 2021 16:57:30 UTC