我有一个包含2个Javascript文件的网页。第二个文件需要前面的文件。更具体地说,在我的第二个Javascript文件中,我立即使用jQuery的.ajax()方法。是否有可能在一个非常有限的情况下,当我使用它时jQuery可能还没有准备好?
注意:我不想使用$(document).ready(),我不想使用require.js或head.js等库。我只是想确信当我使用它时jQuery会存在,并且Javascript的单线程特性即使在边缘情况下也会得到尊重。
答案 0 :(得分:5)
如果在需要使用$.ajax()
方法的文件之前引用了jQuery,则可以确信jQuery可以使用。
要明确的是,$(document).ready()
并不能确保 jQuery 已准备就绪,但是DOM已经可以随时操作了。
答案 1 :(得分:2)
是的,Javascript是严格单线程的,在解析下一个脚本之前,每个脚本都会被解析。
第二个脚本在没有第一个脚本运行的情况下运行的唯一情况是,如果请求第一个脚本失败,但是请求第二个脚本成功,但是如果脚本无法加载,那么无论如何都是非常困难。 / p>
答案 2 :(得分:2)
<script>
包含src
属性的脚本会按顺序加载。因此,如果您有设置
<script src="one-file"></script>
<script src="other-file"></script>
... one-file
必须完成下载和执行,然后文档才能继续解析(即在检索其他文件之前开始)。这与defer
和async
属性不同,但您可能省略了这些属性。
如果我的答案不够安心,I gleaned it from the HTML spec itself。
答案 3 :(得分:0)
请阅读:http://api.jquery.com/category/events/document-loading/,您实际上是在代码将在页面开头运行时进行设置。如果你想使用$(document).ready(),这是必须的,尽管我们大多数人都把它看作是:
$(function() {};
我不确定您的关注是否有效,您还没有真正指出一个问题,您无法通过测试应用程序来弄清楚自己,但也许您可能想要做的事情,如果您遇到jscript代码在多js文件环境中执行之前(再次为什么不使用1,尤其是如果你不熟悉技术细节)是:How to load one JavaScript file from another?从你的jscript 耸肩加载jscript
$.getScript("another_script.js");