【发布时间】:2014-02-28 20:38:29
【问题描述】:
问题不是解决方案,问题是为了更好地了解系统
专家!我知道每当您将 javascript 代码输入 javascript 引擎时,它都会立即由 javascript 引擎执行。由于没有看过Engine的源码,所以有几个问题如下,
假设我正在从远程服务器加载几个文件,即 FILE_1.js 和 FILE_2.js。 并且 FILE_2.js 中的代码需要 FILE_1.js 中的一些代码。所以我包含了如下文件,
<script type="text/javascript" src="FILE_1.js" ></script>
<script type="text/javascript" src="FILE_2.js" ></script>
希望我已经完成了 Javascript 引擎所需的工作。不幸的是,我在 FILE_1.js 中编写了 5000KB 的代码,但是我在 FILE_2.js 中有 5KB 的代码。由于服务器是多线程的,所以 FILE_2.js 肯定会在 FILE_1.js 完成之前加载到我的浏览器中。
javascript 引擎如何处理这个问题?
如果将代码从 FILE_2.js 移动到 inline-script 标签,如下所示,javascript 引擎采取了哪些措施来管理这种依赖关系?
<script type="text/javascript" src="FILE_1.js" ></script>
<script type="text/javascript" >
// Dependent code goes here
</script>
注意:我不希望单字回答单线程。我只想深入了解谁在管理浏览器或javascript引擎或普通人的发出请求?如果请求/响应是由普通人处理的,那么 javascript 引擎如何意识到这一点?
【问题讨论】:
-
服务器将等待文件 1 完全加载后再执行文件 2,因为文件 2 可能依赖于它。如果它们是独立的,您始终可以使用模块加载器,或将
defer属性添加到脚本中。 -
@BenjaminGruenbaum 是正确的,只要您按该顺序加载它们。也就是说,我希望 5000KB 是虚构的数字;这对于客户端脚本来说是巨大的!
标签: javascript javascript-engine