1

我有一个包含 2 个 Javascript 文件的网页。第二个文件需要它之前的文件。更具体地说,在我的第二个 Javascript 文件中,我立即使用了 jQuery 的 .ajax() 方法。是否有可能在非常极端的情况下,当我去使用 jQuery 时它可能还没有准备好?

注意:我不想使用 $(document).ready() 也不想使用诸如 require.js 或 head.js 之类的库。我只是想确信当我去使用 jQuery 时它会在那里,并且即使在边缘情况下也会尊重 Javascript 的单线程特性。

4

4 回答 4

5

如果您在需要使用该$.ajax()方法的文件之前引用了 jQuery,那么您可以确信 jQuery 将可供使用。

需要明确的$(document).ready()是,不是确保jQuery已准备好,而是确保 DOM 已准备好进行操作。

于 2013-02-19T23:35:21.123 回答
2

是的,Javascript 是严格的单线程的,每个脚本都会在下一个脚本被解析之前被解析。

第二个脚本会在第一个脚本没有先运行的情况下运行的唯一情况是,如果请求第一个脚本失败,但请求第二个脚本成功,但如果脚本无法加载,无论如何你都会被搞砸。

于 2013-02-19T23:35:31.193 回答
2

<script>属性包含的脚本是按src顺序加载的。因此,如果您有设置

<script src="one-file"></script>
<script src="other-file"></script>

...one-file 必须在文档继续解析之前完成下载和执行(即在检索其他文件之前)。这与deferandasync属性不同,但您可能会省略这些。

如果我的回答对您来说不够安心,我从 HTML 规范本身收集了它

于 2013-02-19T23:38:03.057 回答
0

请阅读:http://api.jquery.com/category/events/document-loading/,您实际上是在设置代码何时在页面开头运行。如果您想使用 $(document).ready() 并不重要,它是必需的,尽管我们大多数人都将其视为:

$(function() {};

我不确定您的担忧是否有效,您还没有真正指定一个您无法通过测试应用程序自行解决的问题,但是如果您之前遇到 jscript 代码执行,您可能想要做什么是时候在多 js 文件环境中了(为什么不只使用 1,尤其是如果您不熟悉技术)是:如何从另一个 JavaScript 文件加载?从你的 jscript耸耸肩加载 jscript

$.getScript("another_script.js");
于 2013-02-19T23:42:09.277 回答