XHR 对象的 send 方法何时调用对于结果都一样吗?

起因是看了 阮一峰的一篇文章

提到了这样的说法,

https://img3.mukewang.com/5c3c29c40001a9b110840573.jpg

我当时觉得这种说法是有问题的,因为 req 是一个对象,js按照顺序执行,如果在请求发出前指定对应的事件回


调函数,那么这个请求的 onload/onerror 应该都是默认为空的才对。


于是我用这样的代码测试了一下:


// 1

var req = new XMLHttpRequest();

req.open('GET', 'https://segmentfault.com/'); 

req.send();

req.onload = function (res){console.log(res)}; 

req.onerror = function (){}; 


// 2

var req = new XMLHttpRequest();

req.open('GET', 'https://segmentfault.com/'); 

req.onload = function (res){console.log(res)}; 

req.onerror = function (){}; 

req.send();

发现两者都有返回值,也就是说两者都有回调函数。

https://img2.mukewang.com/5c3c29d10001298810490389.jpg

底下的回复中也有人提出了和我类似的看法,他有提及了 缓存的因素。如下:

想请教一下大家的看法。谢谢


紫衣仙女
浏览 446回答 1
1回答

慕的地6264312

send 出去之后哪怕马上有应答也是异步的,必然会在这段代码之后执行回调。结合这个理解var o = {}setTimeout(() => o.hello(), 0)o.hello = () => console.log('hello')
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript