我正在研究一种动态加载一组js文件的机制,这些文件之间有一些依赖关系(例如,我的代码在jquery之后的bootstrap之后)。我定义了一个带有依赖关系的嵌套json类型结构,然后调用一个基于Promise的loadscript机制(感谢这里的一些帖子),它们进行异步调用以加载处于同一级别的js文件,并为js文件调用递归加载脚本它们之间有依赖关系。
这些文件都按照我期望的顺序正确地附加到HEAD。对于依赖项,我调用加载一个文件,该文件在其前任的onload处理程序中存在依赖关系。但是,这似乎并不能保证加载的js代码可以使用(即,似乎没有完成附加并且代码已经执行 - 例如,在调用onload时var / const定义不可用基于断点等...在调试器中 - 我想这似乎是正确的)。
因此,添加了一个观察文件被添加到DOM的mutobserver(例如,childList更改为HEAD)。但是,似乎在代码实际可用之前调用了变异。
为什么我这么想?我把断点,控制台日志与时间信息等等放在一起,其中,mutObserver表示发生了与新加载的脚本插入相对应的更改(例如,由于添加了脚本而导致观察者触发),但是这一点,代码(例如,一些var定义)在调试器的全局变量中不可用。
所以,问题并不是我的代码的具体问题,而是关于是否有可能知道动态包含的js代码已经运行并可以使用的问题。对于我自己的代码,我可以通过其他机制处理这个,但对于第三方js文件,我不想触摸它们。
因此,更具体地说,似乎并不是在由mutObserver检测到的点上向DOM HEAD实际添加代码实际上意味着代码已被执行并且它似乎来自其他帖子(例如{{3或Execution of dynamically loaded JS files)代码的实际执行有些异步,具体取决于浏览器实际执行的操作。
非常感谢对整个过程理解的任何想法。
谢谢,