I really like that idea
> On Apr 21, 2017, at 08:22, Andrea Giammarchi <[email protected]> > wrote: > > nobody has any thought on this ? > > Maybe the following pattern would be just about enough to solve a generic > asynchronous import/export ? > > ```js > export default new Promise(async $export => { > > const utils = await import('./utils.js').default; > > $export({module: 'asynchronous', utils}); > > }); > ``` > > Best Regards > >> On Thu, Apr 20, 2017 at 11:51 AM, Andrea Giammarchi >> <[email protected]> wrote: >> Even if unpolyfillable through simple `function import() {}` declaration, >> I've managed to create a polyfill/payground for the ESnext's dynamic >> import() [1] >> >> This also made me wonder if there's any plan to provide a way to >> asynchronously >> export modules that depends on those that use asynchronous import. >> >> Since AFAIK modules have no top-level await, the only pattern I can see >> right now >> to import something asynchronous is the following one: >> >> ```js >> // module ./js/c.js >> export default Promise.all([ >> import('./js/a.js'), >> import('./js/a.js') >> ]).then([a, b] => { >> const module = {a, b, c() {}}; >> return module; >> }); >> >> // module that uses ./js/c.js >> import('./js/c.js').then(m => m.default).then(c => { >> c.a(); c.b(); c.c(); >> }); >> ``` >> >> However, above boilerplate doesn't seem ideal compared with something like >> the following: >> >> ```js >> // module ./js/c.js >> export default await Promise.all([ >> import('./js/a.js'), >> import('./js/a.js') >> ]).then([a, b] => { >> const module = {a, b, c() {}}; >> return module; >> }); >> >> // module that uses ./js/c.js >> import * as c from './js/c.js'; >> ``` >> >> But again, AFAIK that's not possible. >> >> The clear advantage is that the module consumer wouldn't need to know, or >> care, >> if the loaded module depends on some dynamic, asynchronous, import, >> meaning modules can be updated and eventually moved to async transparently >> for any module consumer. >> >> As summary, is any solution worth exploring/improving/fixing/planning? >> >> Thank you. >> Best Regards >> >> [1] https://github.com/WebReflection/import.js#importjs > > _______________________________________________ > es-discuss mailing list > [email protected] > https://mail.mozilla.org/listinfo/es-discuss
_______________________________________________ es-discuss mailing list [email protected] https://mail.mozilla.org/listinfo/es-discuss

