use*_*946 3 javascript xmlhttprequest
我是XMLHttpRequest的新手.我不明白为什么我们在send()函数之前编写onload()函数.onload()函数处理我们收到的响应和send()函数向服务器发送请求.所以onload()必须按照我的理解在send()函数之后编写.有人可以帮助理解这一点.
var xmlhttp = new XMLHttpRequest(),
method = 'GET',
url = 'https://developer.mozilla.org/';
xmlhttp.open(method, url, true);
xmlhttp.onload = function () {
// Do something with the retrieved data
};
xmlhttp.send();
Run Code Online (Sandbox Code Playgroud)
我不明白为什么我们在
onload()功能之前写send()函数.
因此,在发送请求之前,负载处理程序就位,因为发送请求将导致调用处理程序(如果成功).
onload()函数处理响应我们收到的send()函数和函数向服务器发送请求.所以onload()必须send()按照我的理解在功能之后编写.
它叫后send叫(由XHR基础设施)(或潜在的期间).分配给它时onload,你不是在调用它.你只是定义它,以便当XHR需要调用它时它就在那里.
这是发生的事情:
load事件注册了一个处理程序(在您的情况下,通过分配函数onload).send.
load事件.这会查找当前已注册的处理程序,load并将调用队列调度到这些处理程序(如果有).只要主JavaScript线程可用于运行它们,就会运行这些调用.很多时候,你会以错误的方式做到这一点,因为在请求完成的时候,你会把load处理程序放在那里; 但并非总是如此.load是一个事件.如果可以立即满足请求(例如,从缓存中),浏览器可以load在期间触发send,并查看在调用期间是否存在任何load处理程序,如果没有,则不会对任何回调进行排队调用.稍后当您附加处理程序时,事件已被触发(当没有附加时).send
所以你必须在调用之前附加处理程序send.
| 归档时间: |
|
| 查看次数: |
4025 次 |
| 最近记录: |