doc-service-workers.html (798B)
1 <script> 2 async function registerWorker() { 3 const sw = navigator.serviceWorker; 4 const swr = await sw.register("service-worker.sjs", { scope: "" }); 5 dump(`Registered, scope is: ${swr.scope}\n`); 6 7 await new Promise(resolve => { 8 const worker = swr.installing || swr.waiting || swr.active; 9 if (worker.state === 'activated') { 10 return resolve(); 11 } 12 13 worker.addEventListener('statechange', () => { 14 if (worker.state === 'activated') { 15 return resolve(); 16 } 17 }); 18 }); 19 } 20 21 async function fetchFromWorker() { 22 const response = await fetch("whatever"); 23 const text = await response.text(); 24 console.log(`Response ${text}`); 25 } 26 27 async function registerAndFetchFromWorker() { 28 await registerWorker(); 29 await fetchFromWorker(); 30 } 31 32 fetchFromWorker(); 33 </script>