ajax的同步与异步的优缺点?以及他们有什么不同?最好举个例子,谢谢
同步后挂起后续代码的执行直到ajax返回,异步不会。同步如果网速蛮有些浏览器会假死一段时间,无法进行任何操作
任何需要同步的地方都可以用异步+回调实现,只有懒人才会用同步。。,如某个函数的返回值,不会用回调形式就只能同步了。
同步
function getRst(){
var xhr=new XMLHttpRequest();
xhr.open('get','url',false);
xhr.send(null);
return xhr.responseText
}
var r=getRst();
alert(r)
异步
function getRst(callback){
var xhr=new XMLHttpRequest();
xhr.open('get','url',true);
xhr.send(null);
xhr.onreadystatechange=function(){if(4==xhr.readyState){callback(xhr.responseText)}}
}
getRst(function(r){alert(r)});
同步:比如要把数据库的名字提出来显示在页面,A负责从数据库去拿“名字',B负责在页面显示,这时使用同步的话就是当A在去数据库取“名字”的时候,B先不往下执行,等到A把名字拿回来之后再和A一起去前台显示“名字”。
异步:异步就是不管A是否已经把”名字“从数据库拿出来没有,A和B各走各的,互不干扰。
上面的例子,也不算特别严谨,有时就算不定义同步,也是可以正常进行”名字“显示的,但是一般这种场合还有更加严谨的定义先后顺序的方法。
不知道自己的表达是否清晰,哈哈!