3 ms·
`await` allows the event loop/job queue to run while waiting. However, while using `import` declarations, your module will not run until all imports have comple
by bmeck 10y ago
`await` allows the event loop/job queue to run while waiting. However, while using `import` declarations, your module will not run until all imports have completed; this means that your module will be suspended while the dependency awaits.
If your app is shipped as a single bundle this means your entry point would be unable to run anything while dependencies are awaiting if you use `import` declarations. If your app places runtime dependent imports into a dynamic import like using `import()` as a function, it would not be suspended while waiting.
- domenicd 10y agoExactly correct. But note that > your entry point would be unable to run anything while dependencies are awaiting is very different from the situation with synchronous I/O (in a single-threaded environment). With sync I/O, not only is your entry point unable to do anything (which is what it chose to do, by using `import` instead of `import()`), your entire app is unable to do anything! So other entry points are also blocked. Even worse, since sync I/O blocks the event loop, it prevents the user from interacting with your web page or Node app---e.g. scrolling, clicking links, pressing Ctrl+C to exit, and so on.