全国服务热线:18980020603 成都热线:028-86633922
新闻中心网站专题联系我们
行业新闻 建站经验 网站建设资讯 手机网站资讯 微信网站建设资讯 APP开发资讯 商城网站资讯

成都网站制作:介绍XHR对象send方法的同异步问题

发布人:桔子科技    发布时间:2015-05-10 10:02:59    分享到:
 成都网站制作:介绍XHR对象send方法的同异步问题:
XHR对象上的send方法不仅是用于发送数据部分,只有调用了send方法,整个HTTP请求头才会被发出,然后才是真正的内容部分。如此复杂的过程在规范中也没有具体的定义,所以目前各大浏览器上的实现都存在细微的差异,特别是同异步这个大坑再次中枪。
一个精密的实验
其实我以前一直以为send方法总是同步发起的(注意这里讨论的是“发起”这个行为本身的同异步,open方法的第三个参数始终为true,不讨论false的情况),还在讨论同异步的文章中使用了XHR对象的例子,现在看来确实是个不恰当的例子。在一些浏览器中XHR对象的send方法确实是同步发起的,但并不是所有浏览器都这样,可以通过下面的实验来证实(NodeJS 的部分需要 harmony 和 use_strict):
/dejs
require(‘http’).createServer(function(request,response){
response.setHeader(‘Content-Type’,'textml’);
if(request.url==’/test’){
console.log(request.url);
let connection=request.connection;
connection.write(‘HTTP/1.1 100 Continue\n\n’);
console.log(100);
request.on(‘data’,function(e){
console.log(e+”");
response.end(‘ok’);
});
}else{
let path=process.cwd()+request.url;
require(‘fs’).readFile(path,function(error,data){
response.end(error?’error’:data);
});
};
}).listen(1234);
<!–test.html–>
<script>
var xhr=new XMLHttpRequest;
xhr.onreadystatechange=function(){
console.log(xhr.readyState,xhr.status);
};
xhr.open(“POST”,”test”);
xhr.send(“data”);
var t=new Date;
while(new Date-t<3000);
</script>
这个测试在三大主流浏览器上测试会得到三个不同的结果:
Chrome39:请求同步发出,死循环不会影响请求
Firefox33:请求被注册到下一个消息中异步发出
IE11:请求的头部分同步发出,内容部分被注册到下一个消息中异步发出
实验结果影响的现实
这个结果对实际运用有什么影响呢?在同步过程中多次调用open方法就能看出差异。XHR对象在调用open方法时会停止原来的工作,于是有以下几种情况:
Chrome的send是同步发出的,即使在send之后马上调用open也无法停止已经send的东西了,已经泼出去的水,根本停不下来。
Firefox就完全不同,由于是注册到下一个消息中,send后马上调用open就会取消掉原先注册但还没执行到的动作。
IE比较奇葩,在调动send时头已经发出了,这部分是收不回来的。send后马上调用open只能阻止内容部分的发出。 
本文来源于成都网站建设公司、成都网站设计制作公司与成都APP开发公司-桔子科技公司!
成都网站建设,成都网站设计,成都网站制作,成都网页设计,成都网站建设公司 ,成都网站设计公司, 成都网站制作公司,成都网页设计公司,成都手机网站建设,手机网站建设,成都APP开发,APP开发,成都建网站,成都做网站,成都微信网站建设,成都微商城网站建设,成都商城网站建设,成都微信营销,成都网络公司。

下一篇:成都网站制作:怎么在响应式网页中安置和处理图片及视频上一篇:成都网站制作:谈谈WebSocket的一些看法

最新案例
手机/微网站
  1. [成都]微信网站建设:微信分销系统能为商铺带来哪些特色服务
  2. [成都]微信网站建设:如何通过微信公众号来推广产品
  3. [成都]微信网站建设:微信开发都有些什么功能
  4. [成都]手机网站:手机网站设计需要达到什么效果
  5. [成都]手机网站:手机网站响应式网站解决方案
  6. [成都]手机网站:手机网站响应式网站解决方案
网络营销
  1. APP开发: APP网页评分功能设计
  2. APP开发:手机APP开发前这4点必须要了解
  3. APP开发:为什么企业要做手机APP
  4. APP开发:你可以更好的留住APP用户
  5. APP开发:开发时间的长短主要由哪些因素决定
  6. APP开发:电子商务类APP开发的4点建议
img

7x24小时售后服务

img

5倍故障时长赔付

img

15天无理由退款

img

N对一管家服务

让我们的顾问联系您

  • 电话:4006-028-024 028-86633922

    邮箱:Service@orangeapp.cn

    成都市成华区崔家店路789号上城国际1-24-9号

qq sina