【发布时间】:2012-11-18 02:19:37
【问题描述】:
我正在优化一个页面,但我无法区分这些结果之间的差异(第一个显然更快,但我不确定它是否会减慢页面的渲染速度或其他什么):
这个会尽快启动请求,并在文档就绪时修改 DOM:
<script>
$.ajax({
url: '/some-url',
success: function() {
$(document).ready(function() {
// do something
});
}
});
</script>
</body>
这将在文档准备好时开始请求:
<script>
$(document).ready(function() {
$.ajax({
url: '/some-url',
success: function() {
// do something
}
});
});
</script>
</body>
推荐哪一个?
【问题讨论】:
-
@whirlwin 我已经在这两种情况下都这样做了。或者你的意思是关闭标签后?
-
不,你已经在做我试图解释的事情了。
-
如果您等待文档成功准备就绪,由于 JavaScript 的单线程特性,这是否可能会停止页面渲染直到成功完成?
-
@FrançoisWahl 不,页面不会“等待”它准备好。在
success中,他们会将一个新的“就绪”事件绑定到文档。如果在success执行时文档已经准备好,则$(document).ready的函数将不会执行。 -
@Ian:那是错误的。
jQuery.fn.ready将总是触发,即使 DOM 之前已经准备好。
标签: javascript jquery ajax optimization