AJAX同步与异步的区别
Ajax可以通过两种方法访问服务器,即同步和异步。
同步:提交请求->等待服务器处理-(期间浏览器不能做任何事)>处理完毕返回
异步: 请求通过事件触发->服务器处理(浏览器可以作其他事情)->处理完毕
同步处理有一点像重新加载页面但是只需要下载要求的信息而不是整个页面。如果要求的信息是小到可以迅速下载完的,可以选择同步。
异步处理避免了服务器检索时候的延时问题,访客可以继续在页面进行操作,而要求的信息也可以在更新页面的同时得到处理。对于较大的请求来说,所需的响应时间较长。
因此使用异步调用是Ajax中比较受青睐的方法,这种方法可以为访客的访问提供更便捷的服务,也避免了Ajax干扰其他页面的操作。
Ajax中的同步选择是为极少数既不能使用异步调用也不能重新载入整个页面的情况而准备的。
除了不需要等待响应以外,异步调用的工作原理和同步调用大同小异。两者唯一的区别是在使用异步调用的时候,可以设置多个Ajax调用,这个调用是重叠的,即在前一个还没有响应的时候就可以发出第二个调用。这就异步调用比同步调用看上去要复杂一些的原因,因为你需要确定每个Ajax请求使用的都是单独的Ajax对象而不是所有的Ajax请求都重复使用相同的对象。如果多个异步调用使用的是同一个对象那么响应处理器只会处理收到的第一个响应,而且会忽视其他后续响应。使用带有相同对象的重叠的Ajax调用,我们没有一个确凿的方法可以分辨出究竟哪个响应被处理了,也不知道该响应是否与发出的请求顺序一致。而为每个Ajax调用使用单独的对象,我们就可以获得相应的响应,响应处理器也能够准确对它们进行分辨。
异步使用Ajax对于大多数情况来说都是更好的选择。如果你只需从页面发出一个Ajax调用,那么,除了那个指定要怎样处理调用的参数以外,其编码方式和同步调用没有什么不同。在相同页面使用多个Ajax调用,唯一的复杂的地方是你需要为每个请求创建一个单独的Ajax对象。各种类型的Ajax库可以为你做好这样,唯一需要你编写异步调用代码的情况是你需要与同步调用不同的操作。
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。