- From: Jake Archibald <notifications@github.com>
- Date: Wed, 24 Feb 2016 06:20:37 -0800
- To: slightlyoff/ServiceWorker <ServiceWorker@noreply.github.com>
Received on Wednesday, 24 February 2016 14:21:11 UTC
Agree with @wanderview and @mkruisselbrink here, `setTimeout` is no more dangerous here than other async APIs. `waitUntil` is the mechanism we have to extend an event, if you don't use that, you get no guarantees.
Say I wanted to race the cache & the network, but prefer network content if it can arrive in 500ms:
```js
self.addEventListener('fetch', event => {
event.respondWith(
new Promise((resolve, reject) => {
fetch(event.request).then(resolve, () => cachePromise);
const cachePromise = caches.match(event.request)
.then(response => response || caches.match('/error'));
setTimeout(() => {
resolve(cachePromise);
}, 500);
})
);
});
```
Not sure how you'd achieve this without `setTimeout`.
---
Reply to this email directly or view it on GitHub:
https://github.com/slightlyoff/ServiceWorker/issues/838#issuecomment-188273853
Received on Wednesday, 24 February 2016 14:21:11 UTC