我正在加载Angular应用并使用<script src="/init">
调用加载一些初始化数据。
我发现Chrome在启动所有javascript脚本之前都没有启动Angular $编译过程,包括/init
调用,这可能需要很长时间。
因此,为了使Angular编译过程在/init
返回之前开始,我添加了async
,因此<script src="/init" async>
得到了所需的结果。
但是,async
存在一个奇怪的问题(仅在Chrome中显示),如果添加了async
,则Chrome不会在列出所有其他资源之后请求该资源页面已加载(不是Angular ng-includes
等,只是具有src
和href
属性的常规页面。
网络导致DevTools 没有 async
。最后一个是/init
调用,之前的调用是调用Angular代码的脚本标记
此处 async
最后一栏是<script src="/init" async>
栏。如果你问我,async脚本已经同步加载(按顺序)。
所以我误解了async
是如何运作的?或者这是Chrome中的一个错误(XP版本40.0.2214.94米)?我猜测后者,因为Firefox会启动所有脚本加载而不管{I}期待的async
。
更新 Chrome小组intentionally reduced the priority of async script load,所以我的问题根本就不是错误。这是一个功能! :)