nested-dynamic-import-worker.js (1081B)
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 4 const sourcePromise = new Promise(resolve => { 5 if ('DedicatedWorkerGlobalScope' in self && 6 self instanceof DedicatedWorkerGlobalScope) { 7 self.onmessage = e => { 8 resolve(e.target); 9 }; 10 } else if ( 11 'SharedWorkerGlobalScope' in self && 12 self instanceof SharedWorkerGlobalScope) { 13 self.onconnect = e => { 14 resolve(e.ports[0]); 15 }; 16 } else if ( 17 'ServiceWorkerGlobalScope' in self && 18 self instanceof ServiceWorkerGlobalScope) { 19 self.onmessage = e => { 20 resolve(e.source); 21 }; 22 } 23 }); 24 25 const importedModulesPromise = 26 import('./export-on-dynamic-import-script.js') 27 .then(module => module.ready) 28 .then(importedModules => importedModules) 29 .catch(error => `Failed to do dynamic import: ${error}`); 30 31 Promise.all([sourcePromise, importedModulesPromise]).then(results => { 32 const [source, importedModules] = results; 33 source.postMessage(importedModules); 34 });