dynamic-import-worker.js (1034B)
1 // This script is meant to be imported by a module worker. It receives a 2 // message from the worker and responds with the list of imported modules. 3 const sourcePromise = new Promise(resolve => { 4 if ('DedicatedWorkerGlobalScope' in self && 5 self instanceof DedicatedWorkerGlobalScope) { 6 self.onmessage = e => { 7 resolve(e.target); 8 }; 9 } else if ( 10 'SharedWorkerGlobalScope' in self && 11 self instanceof SharedWorkerGlobalScope) { 12 self.onconnect = e => { 13 resolve(e.ports[0]); 14 }; 15 } else if ( 16 'ServiceWorkerGlobalScope' in self && 17 self instanceof ServiceWorkerGlobalScope) { 18 self.onmessage = e => { 19 resolve(e.source); 20 }; 21 } 22 }); 23 24 const importedModulesPromise = 25 import('./export-on-load-script.js') 26 .then(module => module.importedModules) 27 .catch(error => `Failed to do dynamic import: ${error}`); 28 29 Promise.all([sourcePromise, importedModulesPromise]).then(results => { 30 const [source, importedModules] = results; 31 source.postMessage(importedModules); 32 });