所以这个问题是从我最近问的另一个分支,这更多的是好奇心。jQuery脚本加载队列
我的另一个问题涉及动态加载外部js库。在我的示例中,我使用了.getScript()来导入jQuery模板,然后使用Knockout.js。每次完成加载时,我都会发出警报,以确保它们正确加载。
下面是我用的是近似的代码(似乎是“为了”上的jsfiddle工作,所以它可以一直在我的代码的问题仍然有效,但。):
$.getScript("https://raw.github.com/jquery/jquery-tmpl/master/jquery.tmpl.js", function(){ alert('tmpl finished loading!'); });
$.getScript("http://cloud.github.com/downloads/SteveSanderson/knockout/knockout-2.2.0.js", function(){ alert('Knockout finished loading!'); });
我发现,当我载入页面时,Knockout的警报在tmpl库之前发布,即使它列在第二位。
我的假设是他们会以队列的方式同步加载,在加载下一个之前等待前一个完成。看来情况并非如此。
所以我要求验证这个假设,并解释为什么这是/不是这种情况。我还想知道是否有另一种[更好]的方法来排队脚本加载,这样我就不会因为未加载脚本的依赖而遇到未定义的问题。
记住,javascript只是继续前进,不管前一个函数是否完成。事实上,这是异步加载的定义。你实际上在想他们会同步加载。 –
Woops,你是对的。我的意思是同步。 – Jon
顺便说一句,'ping raw.github.com ::〜110ms','ping cloud.github.com ::〜22ms'这就是为什么第二个脚本首先被加载而不是你的代码中的东西,除了问题之外在接受的答案中概述。并感谢现在遇到它...... – dualed