Personally, I find this a *bad* idea. Top-level `await` in modules would solve this problem far more quickly and efficiently.
----- Isiah Meadows [email protected] www.isiahmeadows.com On Fri, Mar 1, 2019 at 3:35 PM Ben Wiley <[email protected]> wrote: > > Has anyone seen anything like this done in another language (with static > imports)? If so we could learn something maybe. I know you can conditionally > import in Python but that's basically the same thing as .catch()ing dynamic > import()s in JavaScript (except done synchronously). > > Ben > > Le ven. 1 mars 2019 15 h 26, Herby Vojčík <[email protected]> a écrit : >> >> On 1. 3. 2019 18:35, Michał Wadas wrote: >> > I don't think so, because: >> > >> > * Using promises to import module is not always desirable >> > * This mechanism doesn't impact ability to statically analyze modules >> > if ifs are excluded - it can only increase resolution time. >> >> Yeah, if 'if's are excluded. That version with those ifs was what was >> concerning. That actually needs runtime to do the work. I suppose until >> it doesn't need the runtime, it's all ok. >> >> > >> > On Fri, Mar 1, 2019 at 1:56 PM Herby Vojčík <[email protected] >> > <mailto:[email protected]>> wrote: >> > >> > On 1. 3. 2019 12:04, Michał Wadas wrote: >> > > Syntax: >> > > >> > > try import fs from 'fs' >> > > else import fs from 'fs-polyfill' >> > > else import fs from 'another-fs-polyfill' >> > > else do nothing; // Not sure about syntax >> > > >> > > >> > > try import {watchDirectory} from 'fs' >> > > else import {watchDirectory} from 'fs-polyfill' >> > > else if(process.os === 'ExoticSystem') import >> > {watchDirectory} from >> > > 'another-fs-polyfill' >> > > else throw Error('Your OS doesn\'t support watching >> > directories'); >> > >> > I am not an expert, but afaict ES module system was created to be >> > statically analysable and this bring uncertainity. >> > >> > For that probably dynamic import() is there; and your usage should >> > await >> > for a promise that tries to load one then the other etc. >> > >> > Herby >> > >> > > Usages: >> > > >> > > * Optional dependencies >> > > * Polyfills >> > > >> > > Problems: >> > > >> > > * This can prevent loading modules before execution if presence of >> > > modules can't be proved statically >> > > * else-if requires execution before loading module - can be >> > dropped >> > > >> > > >> > > I don't have enough time and knowledge about modules to write actual >> > > proposal. >> > >> >> _______________________________________________ >> 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 _______________________________________________ es-discuss mailing list [email protected] https://mail.mozilla.org/listinfo/es-discuss

