Slide 62
Slide 62 text
function timeout(delay){
return new Promise(function(resolve, reject) {
setTimeout(function() {
resolve(new Response('', {
status: 408,
statusText: 'Request timed out.'
}))
}, delay)
})
}
self.addEventListener('fetch', function(event) {
// if the request is not for example.com, serve requests normally
if (!event.request.url.includes('example.com')) {
return
}
return event.respondWith(caches.match(event.request).then(function(response) {
return response || Promise.race([
timeout(2000),
fetch(event.request)
])
}))
})
attempt the request
force a 2-second timeout
service-worker-timeout.twnsnd.com