<div dir="ltr"><h1 style="margin-bottom:0.8em;padding-bottom:0.2em;padding-left:7em"><span style="font-weight:normal"><font>What is wrong with Loader.get()?</font><br><font size="4">-------<br>Reflect.Loader.prototype.get ( name )</font></span></h1><h1 style="margin-bottom:0.8em;padding-bottom:0.2em;padding-left:7em"><span style="color:rgb(51,51,51);font-family:Cambria,'Palatino Linotype',Palatino,'Liberation Serif',serif;font-size:17px;line-height:22.9500007629395px;text-align:justify;font-weight:normal;background-color:rgb(253,253,252)">If this Loader's module registry contains a Module with the given normalized</span><span style="color:rgb(51,51,51);font-family:Cambria,'Palatino Linotype',Palatino,'Liberation Serif',serif;font-size:17px;line-height:22.9500007629395px;text-align:justify;font-weight:normal;background-color:rgb(253,253,252)"> </span><var style="color:rgb(51,51,51);font-family:Cambria,'Palatino Linotype',Palatino,'Liberation Serif',serif;font-size:17px;line-height:22.9500007629395px;text-align:justify;font-weight:normal;background-color:rgb(253,253,252)">name</var><span style="color:rgb(51,51,51);font-family:Cambria,'Palatino Linotype',Palatino,'Liberation Serif',serif;font-size:17px;line-height:22.9500007629395px;text-align:justify;font-weight:normal;background-color:rgb(253,253,252)">, return it. Otherwise, return</span><span style="color:rgb(51,51,51);font-family:Cambria,'Palatino Linotype',Palatino,'Liberation Serif',serif;font-size:17px;line-height:22.9500007629395px;text-align:justify;font-weight:normal;background-color:rgb(253,253,252)"> </span><span class="" style="color:rgb(85,85,85);font-family:Cambria,'Palatino Linotype',Palatino,'Liberation Serif',serif;font-size:17px;line-height:22.9500007629395px;text-align:justify;background-color:rgb(253,253,252)">undefined</span><span style="color:rgb(51,51,51);font-family:Cambria,'Palatino Linotype',Palatino,'Liberation Serif',serif;font-size:17px;line-height:22.9500007629395px;text-align:justify;font-weight:normal;background-color:rgb(253,253,252)">. If the module is in the registry but has never been evaluated, first synchronously evaluate the bodies of the module and any dependencies that have not evaluated yet.</span><br></h1><div>But more important perhaps, what is wrong with asynchronous loads? The System.import() promises a module after loading all of its dependencies; previously imported modules are not reloaded.  This code can be used in development, then in production the bundled modules can be prefixed to load the registry and the same call executes the same app. If this scheme is not going to work now is the time to sort it out.</div><div><br></div><div>jjb </div><div><span style="color:rgb(51,51,51);font-family:Cambria,'Palatino Linotype',Palatino,'Liberation Serif',serif;font-size:17px;line-height:22.9500007629395px;text-align:justify;font-weight:normal;background-color:rgb(253,253,252)"><br></span></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Sat, Sep 27, 2014 at 10:01 PM, John Lenz <span dir="ltr"><<a href="mailto:concavelenz@gmail.com" target="_blank">concavelenz@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">I would like to see some way to preload everything, and be able to retrieve them synchronously, something like:<div><br></div><div>  System.loader.addNoAsync('...');  // throw if all imports aren't available already</div><div><br></div><div>So that the script could be used during initial render. I understand that this would mean that the module would need to be parsed and executed synchronously. Forcing folks to never use any module for code that needs to be inline seems like a bad turn.</div></div><div class="HOEnZb"><div class="h5"><div class="gmail_extra"><br><div class="gmail_quote">On Fri, Sep 26, 2014 at 1:44 PM, John Barton <span dir="ltr"><<a href="mailto:johnjbarton@google.com" target="_blank">johnjbarton@google.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">Theoretically you can use System.normalize() and System.get() to lookup a module by name synchronously. The normalize feature requires a referrer or address.<div><br></div><div>Since browsers are determined to eliminate synchronous scripts, you may as well deal with the asynchronous System.import() and obnoxious promises stuff now and save yourself some pain later.</div><div><br></div><div>jjb</div></div><div><div><div class="gmail_extra"><br><div class="gmail_quote">On Fri, Sep 26, 2014 at 9:40 AM, Konstantin Ikonnikov <span dir="ltr"><<a href="mailto:ikokostya@gmail.com" target="_blank">ikokostya@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">I don't want load module using http request. In my case module already defined and I want import it later when I get its name:<br><div><br></div><div>```js</div><div>var moduleName = getModuleName();</div><div>import { foo } from moduleName;</div><div><br></div><div>// use foo</div><div>```</div><div><br></div><div><br></div></div><div><div><div class="gmail_extra"><br><div class="gmail_quote">2014-09-26 20:00 GMT+04:00 Marius Gundersen <span dir="ltr"><<a href="mailto:gundersen@gmail.com" target="_blank">gundersen@gmail.com</a>></span>:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div><div><div>And the reason you cannot import a module synchronously is that it would freeze the entire browser until the http request completes, which could be several seconds on a slow internet connection. <br><br></div>If you want to import something dynamically you can do it using the API (to be finalized, I believe):<br><br></div><span><div>```js<br></div><div>var moduleName = 'foo';<br></div></span>Loader.import(moduleName).then(function(foo){<br></div>  //use foo here<br><div>});<br>```<span><font color="#888888"><br><br></font></span></div><span><font color="#888888"><div>Marius Gundersen<br></div></font></span></div><div><div><div class="gmail_extra"><br><div class="gmail_quote">On Fri, Sep 26, 2014 at 5:29 PM, John Barton <span dir="ltr"><<a href="mailto:johnjbarton@google.com" target="_blank">johnjbarton@google.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">no.</div><div class="gmail_extra"><br><div class="gmail_quote"><div><div>On Fri, Sep 26, 2014 at 8:12 AM, Konstantin Ikonnikov <span dir="ltr"><<a href="mailto:ikokostya@gmail.com" target="_blank">ikokostya@gmail.com</a>></span> wrote:<br></div></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><div><div dir="ltr"><span style="font-family:arial,sans-serif;font-size:13px">Can I import module </span><span style="font-family:arial,sans-serif;font-size:13px">dynamically</span><span style="font-family:arial,sans-serif;font-size:13px">, but synchronously? Example for common </span><span style="font-family:arial,sans-serif;font-size:13px">js</span><div style="font-family:arial,sans-serif;font-size:13px"><br></div><div style="font-family:arial,sans-serif;font-size:13px">```js</div><div style="font-family:arial,sans-serif;font-size:13px">var moduleName = 'foo';</div><div style="font-family:arial,sans-serif;font-size:13px">var foo = require(moduleName);</div><div style="font-family:arial,sans-serif;font-size:13px">```</div><div style="font-family:arial,sans-serif;font-size:13px"><br></div><div style="font-family:arial,sans-serif;font-size:13px">In es6 draft I found that ModuleSpecifier must be a StringLiteral <a href="http://people/" target="_blank">http://people</a>.<a href="http://mozilla.org/~jorendorff/es6-draft.html#sec-imports" target="_blank">mozilla.org/~jorendorff/es6-draft.html#sec-imports</a></div></div>
<br></div></div>_______________________________________________<br>
es-discuss mailing list<br>
<a href="mailto:es-discuss@mozilla.org" target="_blank">es-discuss@mozilla.org</a><br>
<a href="https://mail.mozilla.org/listinfo/es-discuss" target="_blank">https://mail.mozilla.org/listinfo/es-discuss</a><br>
<br></blockquote></div><br></div>
<br>_______________________________________________<br>
es-discuss mailing list<br>
<a href="mailto:es-discuss@mozilla.org" target="_blank">es-discuss@mozilla.org</a><br>
<a href="https://mail.mozilla.org/listinfo/es-discuss" target="_blank">https://mail.mozilla.org/listinfo/es-discuss</a><br>
<br></blockquote></div><br></div>
</div></div></blockquote></div><br></div>
</div></div><br>_______________________________________________<br>
es-discuss mailing list<br>
<a href="mailto:es-discuss@mozilla.org" target="_blank">es-discuss@mozilla.org</a><br>
<a href="https://mail.mozilla.org/listinfo/es-discuss" target="_blank">https://mail.mozilla.org/listinfo/es-discuss</a><br>
<br></blockquote></div><br></div>
</div></div><br>_______________________________________________<br>
es-discuss mailing list<br>
<a href="mailto:es-discuss@mozilla.org" target="_blank">es-discuss@mozilla.org</a><br>
<a href="https://mail.mozilla.org/listinfo/es-discuss" target="_blank">https://mail.mozilla.org/listinfo/es-discuss</a><br>
<br></blockquote></div><br></div>
</div></div></blockquote></div><br></div>