使用非阻塞脚本

时间:2010-08-24 07:38:00

标签: javascript

我越是使用JavaScript,我就越努力想出加载和执行脚本的有效方法。 我发现一个非常有用的方法是加载javascript而不会阻塞。

function include_js(url) { 
    var script = document.createElement("script");
    script.type = "text/javascript";
    script.src = url;
    document.getElementsByTagName("head")[0].appendChild(script);
}

include_js('script.js');

JavaScript还有一个窗口方法,在页面加载时执行。

window.onload = function() {
 alert('Script executed onload');
};

我想知道的是,浏览器如何处理window.onload方法执行的脚本,是阻塞还是非阻塞脚本?

2 个答案:

答案 0 :(得分:1)

它是无阻塞的。您只是将一个变量赋值给一个函数,并继续执行其他脚本。加载DOM后,将调用指定的回调。

答案 1 :(得分:1)

  

我想知道的是,怎么做   浏览器处理脚本执行的   window.onload方法,它是阻塞的   或非阻塞脚本?

您是指如何执行事件处理程序中的代码?它以异步方式运行,但由于JavaScript只有一个线程,因此它是块,并且在线程可用之前将被阻塞。

请参阅this article about how timers work以更好地了解异步方法在单线程环境中的行为。

让JavaScript代码与其他JavaScript代码并行执行的唯一方法是使用web workers,它实际上使用单独的线程。