ajax 同步请求和异步请求的差异分析


Posted in Javascript onJuly 04, 2011

ajax同步和异步的差异, 先看2段代码:
代码一:

Synchronize = function(url,param) { 
function createXhrObject() { 
var http; 
var activeX = [ "MSXML2.XMLHTTP.3.0", "MSXML2.XMLHTTP", "Microsoft.XMLHTTP" ]; 
try { 
http = new XMLHttpRequest; 
} catch (e) { 
for (var i = 0; i < activeX.length; ++i) { 
try { 
http = new ActiveXObject(activeX[i]); 
break; 
} catch (e) {} 
} 
} finally { 
return http; 
} 
} 
var conn = createXhrObject(); 
conn.open("POST", url, false);//ajax同步 
conn.send(param); 
var strReturn = conn.responseText; 
alert("1"); 
if (strReturn != "") { 
return Ext.decode(conn.responseText); 
} else { 
return null; 
} 
alert("2"); 
};

代码二:
Ajax 同步请求方式:
Synchronize = function(url,param) { 
function createXhrObject() { 
var http; 
var activeX = [ "MSXML2.XMLHTTP.3.0", "MSXML2.XMLHTTP", "Microsoft.XMLHTTP" ]; 
try { 
http = new XMLHttpRequest; 
} catch (e) { 
for (var i = 0; i < activeX.length; ++i) { 
try { 
http = new ActiveXObject(activeX[i]); 
break; 
} catch (e) {} 
} 
} finally { 
return http; 
} 
} 
var conn = createXhrObject(); 
conn.open("POST", url, true);//ajax异步 
conn.send(param); 
var strReturn = conn.responseText; 
alert("1"); 
if (strReturn != "") { 
return Ext.decode(conn.responseText); 
} else { 
return null; 
} 
alert("2"); 
};

同步和异步的差异如下:

conn.open('POST',Url,true); // ajax异步
conn.open('POST',Url,false); // ajax同步

对于代码二,为异步的ajax请求,执行结果为:先执行alert(2)再执行alert(1), 异步的意思就是说一旦conn.open请求一发出,前端不去等待它的响应便执行后面的代码,所以alert(2)先执行了,然后当响应response到达以后才执行alert(1);

对于代码一,为同步的ajax请求,执行结果为:先执行alert(1)再执行alert(2), 同步的意思就是说一旦conn.open请求一发出,前端就去等待它的响应,响应完成以后,alert(1)先执行了,然后alert(2);

Javascript 相关文章推荐
使用jquery hover事件实现表格的隔行换色功能示例
Sep 03 Javascript
js中reverse函数的用法详解
Dec 26 Javascript
JavaScript函数定义的常见注意事项小结
Sep 16 Javascript
JS小游戏之仙剑翻牌源码详解
Sep 25 Javascript
javascript实现随机显示星星特效
Jan 28 Javascript
基于Javascript实现二级联动菜单效果
Mar 04 Javascript
jQuery+CSS3实现仿花瓣网固定顶部位置带悬浮效果的导航菜单
Sep 21 Javascript
微信小程序之发送短信倒计时功能
Aug 30 Javascript
python爬取安居客二手房网站数据(实例讲解)
Oct 19 Javascript
解决angularJS中input标签的ng-change事件无效问题
Sep 13 Javascript
Vue项目中使用jquery的简单方法
May 16 jQuery
基于JavaScript 实现拖放功能
Sep 12 Javascript
Extjs EditorGridPanel中ComboBox列的显示问题
Jul 04 #Javascript
Extjs gridpanel 出现横向滚动条问题的解决方法
Jul 04 #Javascript
JS分割字符串并放入数组的函数
Jul 04 #Javascript
js列举css中所有图标的实现代码
Jul 04 #Javascript
初学js 新节点的创建 删除 的步骤
Jul 04 #Javascript
初学js插入节点appendChild insertBefore使用方法
Jul 04 #Javascript
javascript中类的定义及其方式(《javascript高级程序设计》学习笔记)
Jul 04 #Javascript
You might like
php cache类代码(php数据缓存类)
2010/04/15 PHP
PHP中的session永不过期的解决思路及实现方法分享
2011/04/20 PHP
php对数组排序代码分享
2014/02/24 PHP
PHP filter_var() 函数, 验证判断EMAIL,URL等
2021/03/09 PHP
自动最大化窗口的Javascript代码
2013/05/22 Javascript
快速解决jquery之get缓存问题的最简单方法介绍
2013/12/19 Javascript
nodejs实例解析(输出hello world)
2017/01/03 NodeJs
函数四种调用模式以及其中的this指向
2017/01/16 Javascript
JavaScript30 一个月纯 JS 挑战中文指南(英文全集)
2017/07/23 Javascript
vue组件父子间通信详解(三)
2017/11/07 Javascript
Vue中使用canvas方法总结
2019/02/12 Javascript
基于vue-cli、elementUI的Vue超简单入门小例子(推荐)
2019/04/17 Javascript
解决vant框架做H5时踩过的坑(下拉刷新、上拉加载等)
2020/11/11 Javascript
[00:17]游戏风云独家报道:DD赛后说出数字秘密 吓死你们啊!
2014/07/13 DOTA
ptyhon实现sitemap生成示例
2014/03/30 Python
python调用Moxa PCOMM Lite通过串口Ymodem协议实现发送文件
2014/08/15 Python
python自动化测试之setUp与tearDown实例
2014/09/28 Python
Python环境下安装使用异步任务队列包Celery的基础教程
2016/05/07 Python
详解Python中的相对导入和绝对导入
2017/01/06 Python
python实现彩票系统
2020/06/28 Python
树莓派用python中的OpenCV输出USB摄像头画面
2019/06/22 Python
python绘制已知点的坐标的直线实例
2019/07/04 Python
Python + Flask 实现简单的验证码系统
2019/10/01 Python
python自动化测试无法启动谷歌浏览器问题
2019/10/10 Python
opencv+python实现鼠标点击图像,输出该点的RGB和HSV值
2020/06/02 Python
Python爬虫入门教程01之爬取豆瓣Top电影
2021/01/24 Python
美国著名的女性内衣零售商:Frederick’s of Hollywood
2018/02/24 全球购物
JENNIFER BEHR官网:各种耳环和发饰
2020/06/07 全球购物
教师自荐书
2013/10/08 职场文书
材料工程专业毕业生求职信
2014/03/04 职场文书
美丽乡村建设实施方案
2014/03/23 职场文书
个人年终总结怎么写
2015/03/09 职场文书
2016新年致辞
2015/08/01 职场文书
春节随笔
2015/08/15 职场文书
煤矿安全学习心得体会
2016/01/18 职场文书
Java数组详细介绍及相关工具类
2022/04/14 Java/Android