我在我的代码库中发现代码在另一个 $(document).ready(function() { ...
例如
$(document).ready(function() {
// 20 lines...
$(document).ready(function() {
foo()
}
// 200 lines...
}
function foo() {...}
我想了解执行顺序,以便我可以安全地重构这个嵌套回调。外部回调似乎在内部回调执行之前继续执行。是否保证在调用内部回调之前完成外部回调?
最佳答案
Is the outer callback guaranteed to finish before the inner callback gets called?
是的。
document.ready
的工作方式是它会等待 readystatechange 事件在回调被调用之前触发准备就绪,但是它也会运行 setTimeout
如果readystatechange 事件已经触发。
这意味着代码如:
$(function () {
a();
$(b);
c();
});
其中a
、b
、c
都是函数,会按照以下顺序执行:
一个
c
b
在相关说明中,人们会质疑为什么您想要在另一个document.ready
调用中运行一个document.ready
调用,简短的回答是你不会。
唯一的好处是 $(callback)
写起来比:
setTimeout(callback, 0);
关于javascript - $(document).ready 里面 $(document).ready,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22414842/