2010-03-31 88 views
3

我不知道是否有人能帮助我理解一些异步JavaScript概念...如何ansynchronous方法的工作

说我做的非同步AJAX调用就像这样:

xmlhttp=new XMLHttpRequest(); 
    xmlhttp.onreadystatechange= myFoo; 
    xmlhttp.open("GET",url,true); 

这里是我的回调功能:

function myFoo() 
{ 
if (xmlhttp.readyState==4) 
    { 
    if (xmlhttp.status==200) 
    { 
    // Success message 
    } 
    else 
    { 
    // some error message 
    } 
    } 
} 

现在, 执行路径何时再次启动?一旦我调用open(),执行继续直接在open()之下继续,另一个“线程”在ajax请求完成后进入异步函数?

或者,浏览器是否等待请求完成,进行异步调用,然后在打开后继续执行?

谢谢!

回答

1

首先,您错过了xmlhttp.send调用。

浏览器没有等待打开后继续完成的请求。这是整个想法抛出一个异步调用。

+0

是的,我意识到......我想在其他语言中对我更有意义,因为异步调用通常是作为另一个线程进入的...所以我想我们有多线程的JavaScript? – Polaris878 2010-03-31 22:47:08

+1

不,JavaScript不是多线程的。工人API是最新的一个,允许对规则进行修改,但它是相当新的。 若要将您的头围绕在响应回来时发生的情况,请阅读以下链接:http://www.javascriptkata.com/2007/06/12/ajax-javascript-and-threads-the-final-truth/ – Rajat 2010-03-31 23:17:41

+0

我显然不太熟悉异步的方式大声笑...感谢您的链接 – Polaris878 2010-03-31 23:20:42