![](/img/trans.png)
[英]Detect when list of scripts are all loaded in javascript (Using namespaces).
[英]Javascript: Is there any way to detect when all async scripts have loaded?
如果您在HTML页面上使用普通脚本标记,则在下载并解析脚本之前,渲染将被阻止。 为了避免这种情况,为了更快地显示页面,您可以添加'async'属性,该属性告诉浏览器无需等待该脚本即可继续处理页面。 但是,从本质上讲,这意味着引用该脚本中任何内容的其他JavaScript可能会崩溃,因为所需的对象尚不存在。
据我所知,没有可以绑定的allScriptsLoaded事件,因此我正在寻找一种模拟方法。
我知道以下策略可将运行其他代码的时间推迟到异步脚本可用之前:
我是否缺少某些东西,或者这是最新技术?
您所希望的最好的办法就是知道是否有任何未完成的异步调用(XMLHttpRequest,setTimeout,setInterval,SetImmediate,process.nextTick,Promise),然后等待不存在任何异步调用。 但是,这是实现细节,它会丢失给底层的本机代码-javascript仅具有自己的事件循环,如果我正确理解,异步调用将传递给本机代码。 最重要的是,您无权访问事件循环。 您只能插入,不能读取或控制流(除非您在io.js中并感到生气)。
模拟一个脚本的方法是自己跟踪脚本调用,并在所有脚本完成后调用。 (即,跟踪每次在事件循环中插入相关脚本时的情况。)
但是,是的,DOM没有提供NoAsyncPending全局之类的东西,而这正是您真正需要的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.