javascript中的async=“async”标记有时我的JS文件有“未定义的不是函数”为什么?如何在它们之间强制一些How序列?

javascript中的async=“async”标记有时我的JS文件有“未定义的不是函数”为什么?如何在它们之间强制一些How序列?,javascript,html,Javascript,Html,我使用以下代码加载JavaScript文件。这对我来说很好 <script src="//ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js" ></script> <script src="../js/jq/jquery.ui.core.js" ></script> <script src="../js/jq/jquery.ui.widget.js" ></sc

我使用以下代码加载JavaScript文件。这对我来说很好

<script  src="//ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js" ></script>
<script  src="../js/jq/jquery.ui.core.js" ></script>
<script  src="../js/jq/jquery.ui.widget.js" ></script>
<script  src="../js/jq/jquery.ui.mouse.js" ></script>
<script  src="../js/jq/jquery.ui.mouse1.js" ></script>
<script  src="../js/jq/jquery.ui.mouse2.js" ></script>
<script  src="../js/MyLoader.js" ></script>

如果您试图解决的主要问题是确保MyLoader.js最后加载,其他所有内容都在加载之前加载,那么只需从所有脚本标记中删除async属性即可。然后,浏览器将按照文件中遇到的顺序加载和执行它们

有关使用异步的更多信息,您不能使多个相互依赖且必须按特定顺序加载的JS文件都是异步的。然后,它们可能会以错误的顺序加载并导致错误

例如,所有jQuery.ui文件都依赖于jQuery.min.js,因此必须首先加载它。当你异步加载东西时,它们的顺序将不再得到保证,因此你要决定它们是否以正确的顺序加载

异步加载的最佳候选脚本是不依赖于任何其他异步脚本的脚本、初始呈现页面时不需要的脚本以及独立的脚本。他们在加载时完成自己的工作,完成工作的时间并不重要,也不与页面中的任何其他内容相关联。这种脚本的一个完美示例是在远程服务器上记录web统计信息的脚本。它不涉及页面的初始呈现,无论它是在加载页面时发生还是在一两秒钟后发生,也不管它是否与页面中的任何其他内容耦合

有关此主题的详细讨论,请参阅


如果您真的想异步加载一组依赖脚本并按特定顺序加载它们,那么您必须使用一组额外的代码来协调这一点。使用async属性时,该级别的顺序和协调不会自动发生。

如果您试图解决的主要问题是确保MyLoader.js最后加载,其他所有内容都在它之前加载,那么只需从所有脚本标记中删除async属性即可。然后,浏览器将按照文件中遇到的顺序加载和执行它们

有关使用异步的更多信息,您不能使多个相互依赖且必须按特定顺序加载的JS文件都是异步的。然后,它们可能会以错误的顺序加载并导致错误

例如,所有jQuery.ui文件都依赖于jQuery.min.js,因此必须首先加载它。当你异步加载东西时,它们的顺序将不再得到保证,因此你要决定它们是否以正确的顺序加载

异步加载的最佳候选脚本是不依赖于任何其他异步脚本的脚本、初始呈现页面时不需要的脚本以及独立的脚本。他们在加载时完成自己的工作,完成工作的时间并不重要,也不与页面中的任何其他内容相关联。这种脚本的一个完美示例是在远程服务器上记录web统计信息的脚本。它不涉及页面的初始呈现,无论它是在加载页面时发生还是在一两秒钟后发生,也不管它是否与页面中的任何其他内容耦合

有关此主题的详细讨论,请参阅


如果您真的想异步加载一组依赖脚本并按特定顺序加载它们,那么您必须使用一组额外的代码来协调这一点。使用async属性时,该级别的顺序和协调不会自动发生。

您现在的问题听起来像是:如何以异步顺序加载脚本真正的答案是,这里不需要异步。较新的浏览器并行下载脚本并按顺序执行脚本

您现在的问题听起来像是:如何异步按顺序加载脚本真正的答案是,这里不需要异步。较新的浏览器并行下载脚本,并按顺序执行它们。异步标记表示将加载异步脚本

因此,如果jquery.min.js在其依赖项开始加载时仍在加载,则脚本将无法工作


如果您想加载异步,请尝试使用AMD模式,我个人建议使用async标记表示将加载异步

因此,如果jquery.min.js在其依赖项开始加载时仍在加载,则脚本将无法工作


如果您想加载异步,请尝试使用AMD模式,我个人建议这应该很容易修复,只需将所有jquery js文件连接到一个主文件中,然后加载该文件,这也会在URL请求时保存,并加快页面加载速度

在执行jquery中的函数之前,检查它们是否已定义

typeof func!=="undefined"

这应该很容易修复,只需将所有jQueryJS文件连接到一个主文件中,然后加载该文件即可 AVE的URL请求,使网页加载速度更快

在执行jquery中的函数之前,检查它们是否已定义

typeof func!=="undefined"

对于具有依赖关系的脚本,应该使用defer。延迟与异步相同,只是它维护执行顺序。此处的更多信息:

对于具有依赖关系的脚本,应该使用“延迟”。延迟与异步相同,只是它维护执行顺序。这里有更多信息:

我使用HTML5,我需要异步加载它们以便更快一点吗?不,这是我的答案。Async可能会导致其无序执行。对于较新的浏览器,async并不能使它更快,因为它们执行并行下载,但按顺序执行anyway@Emax-async允许在加载脚本之前呈现页面。这样做的代价是没有定义异步脚本加载的顺序。请参阅我的答案,了解什么类型的脚本最适合异步加载提示,这不是您所拥有的。@jfriend00:如果您希望在请求脚本之前呈现HTML,只需将脚本放在HTML之后,我很清楚将脚本放在内容之后的好处。async甚至更进一步,因为在加载异步脚本之前,页面可以完全处于活动状态,用户可以自由与之交互。如果脚本放在正文的末尾,情况就不是这样了。我使用HTML5,我是否需要异步加载它们以便更快一点?不,我的答案是这样的。Async可能会导致其无序执行。对于较新的浏览器,async并不能使它更快,因为它们执行并行下载,但按顺序执行anyway@Emax-async允许在加载脚本之前呈现页面。这样做的代价是没有定义异步脚本加载的顺序。请参阅我的答案,了解什么类型的脚本最适合异步加载提示,这不是您所拥有的。@jfriend00:如果您希望在请求脚本之前呈现HTML,只需将脚本放在HTML之后,我很清楚将脚本放在内容之后的好处。async甚至更进一步,因为在加载异步脚本之前,页面可以完全处于活动状态,用户可以自由与之交互。如果脚本放在正文的末尾,情况就不是这样了。将所有文件合并成一个文件并不总是一个好主意,因为浏览器现在可以并行下载文件。因此,3个200K文件比一个600K文件要好。将所有文件合并成一个文件并不总是一个好主意,因为浏览器现在可以并行下载文件。因此,3个200K文件比一个600K文件要好。
typeof func!=="undefined"