$(document).ready() 是在主线程中执行,还是异步执行?

Jay*_*Jay 3 javascript jquery events multithreading asynchronous

我正在使用图形可视化库$(document).ready(),它似乎阻止了 UI。我期望$(document).ready()在单独的线程中执行。

有谁知道详细情况吗?也许我应该使用setTimeout异步运行代码?

编辑:

术语“异步”和“单独线程”在 JavaScript 中具有误导性。我不是 JavaScript 专家,也找不到更准确的术语。请参阅答案以进行澄清。

Ken*_*iro 5

除了 Web Workers(无法直接访问 DOM)之外,JavaScript 在单线程中运行。 $(document).ready()异步是指您传递给它的回调可能会立即触发,或者在加载 DOM 后的某个时间触发,但当其回调实际运行时,它是 JS 运行时正在处理的唯一事情。

例如,长时间运行的for循环将阻塞 UI 线程,无论它是否处于就绪回调、事件处理程序、异步 XHR 的成功回调等中。防止它阻塞线程的唯一方法是中断通过使用 调度后面的块将其分成几个循环setTimeout