jQuery ajax 的同步与异步

JavaScript 2013-08-09 jQuery,ajax,同步,异步

默认jQuery所有的ajax请求都是异步处理,即在回调函数里处理返回结果:

$.get('b.txt',function(data){
	console.log(data);
});

执行:

为了更清楚的知道异步处理特性,改写一下:

console.log("开始请求!");

$.get('b.txt',function(data){
	console.log("请求结果!");
});

console.log("请求之后!");

执行结果:

从以上执行顺序就能一眼看出代码执行过程,回调函数最后执行,有点onload的感觉。如果你需要同步处理,比如先获取请求结果然后再执行请求之后的代码。要启用同步请求可以在请求的时候加上同步处理参数async=false 

console.log("开始请求!");

var result = $.ajax({ url: "b.txt", async: false }).responseText; 
console.log("请求结果 : " + result);

console.log("请求之后!");

执行结果:

So,你也可以全局设置,然后直接使用$.get更简单,如:

$.ajaxSetup({ 
	async: false 
}); 

console.log("开始请求!");

var result = $.get("b.txt").responseText; 
console.log("请求结果 : " + result);

var result = $.get("c.txt").responseText; 
console.log("请求结果 : " + result);

console.log("请求之后!");

执行:

当然,不要盲目的使用同步处理,因为毕竟是远程读取文件,即通过URL获取文件内容,假如文件内容庞大或者回应慢直接影响性能,浏览器在请求处理没有结束之前会假死。所以通常数据处理都是异步,获取静态内容或者处理快的URL才使用同步。但建议不是特别有必要还是使用异步并且可以并发多个请求,同步只有一个支路,如果卡在某个支路后面就被葬送了。

 

文字链接:《jQuery ajax 的同步与异步

文章地址:http://www.qttc.net/201308362.html

除非标注,琼台博客所有博文均为原创,转载请加文字链接注明来源

乳名?小名?昵称?网名?均可

email,放心,我不会给你乱投广告的

想获得回访就把你的站点URL写上(没有留空)

[NOTICE]木要投放广告
[NOTICE]木要骂人,说不该说的话
[NOTICE]自由言论,但要遵纪守法

Comments 0

    Hi,你想第一个做沙发么?