`
zrzdemon
  • 浏览: 24409 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Ajax,选择同步还是异步

    博客分类:
  • Ajax
阅读更多

Ajax在网页中最大的一个优点是它可以访问服务器上的信息而不需要重新加载网页。这意味着要检索或是更新信息的某一小个部分的时候,只需要从服务器端传送那一部分需要的信息而不需要重新下载整个网页。

  Ajax可以通过两种方法访问服务器,即同步(脚本会停留并等待服务器发送回复然后再继续)和异步(脚本允许页面继续其进程并处理可能的回复)。

  同步处理你的请求有一点像重新加载页面但是只需要下载要求的信息而不是整个页面。因此这一方法会比不使用Ajax要快一些因为信息的下载量要小,所以检索的速度就快了。但是要使用这个方法需要你的访客等待下载请求的出现。虽然你的访客已经习惯了等待下载整个页面,但是他们还不习惯在与网页互动的时候进行等待,因此除非你要求的信息是小到可以迅速下载完的,否则用户是不会耐心去等待的。

  异步处理避免了服务器检索时候的延时问题,因为你的访客可以继续在页面进行操作,而要求的信息也可以在更新页面的同时得到处理。对于较大的请求来说,所需的响应时间较长,但是如果使用异步处理,那么访客不会特别意识到延时所带来的麻烦,因为他们的注意力仍然放在对页面的操作上。而对于那些瞬时的响应,你的访客甚至根本不会意识到服务器发出了这样的请求。

  因此使用异步调用是Ajax中比较受青睐的方法,这种方法可以为访客的访问提供更便捷的服务,使得他们更愉悦,也避免了Ajax干扰其他页面的操作。

  如果异步调用对于访客来说是可以提供比同步调用更方便的访问的话,那么为什么Ajax还要为我们提供同步调用呢?虽然异步调用的使用率几乎是百分之百,但是总是有一些例外情况的。在极少见的情况下,让你的访客在某一特定服务器端的处理过程结束前,让你的访客继续操作页面是没有什么意义的。如果是碰到这样的情况,或许根本不要使用Ajax而只是重新载入整个页面。Ajax中的同步选择是为极少数既不能使用异步调用也不能重新载入整个页面的情况而准备的。虽然这样的情况不多,但是它们确确实实存在,因此为以防万一Ajax需要准备同步调用。

  对于很多初学者来说,容易掉入使用同步调用的误区,即便是在更适合使用异步调用的时候,他们还是一如既往地选择同步调用。造成这一情况的原因主要是因为同步调用更容易让人理解整个进程是怎样运行的。事实上,除了不需要等待响应以外,异步调用的工作原理和同步调用大同小异。

  两者唯一的区别是在使用异步调用的时候,我们可以设置多个Ajax调用,这个调用是重叠的,即在前一个还没有响应的时候就可以发出第二个调用。这就异步调用比同步调用看上去要复杂一些的原因,因为你需要确定每个Ajax请求使用的都是单独的Ajax对象而不是所有的Ajaz请求都重复使用相同的对象。如果多个异步调用使用的是同一个对象那么响应处理器只会处理收到的第一个响应,而且会忽视其他后续响应。使用带有相同对象的重叠的Ajax调用,我们没有一个确凿的方法可以分辨出究竟哪个响应被处理了,也不知道该响应是否与发出的请求顺序一致。而为每个Ajax调用使用单独的对象,我们就可以获得相应的响应,响应处理器也能够准确对它们进行分辨。

  异步使用Ajax对于大多数情况来说都是更好的选择。如果你只需从页面发出一个Ajax调用,那么,除了那个指定要怎样处理调用的参数以外,其编码方式和同步调用没有什么不同。在相同页面使用多个Ajax调用,唯一的复杂的地方是你需要为每个请求创建一个单独的Ajax对象。各种类型的Ajax库可以为你做好这样,唯一需要你编写异步调用代码的情况是你需要与同步调用不同的操作。

分享到:
评论

相关推荐

    AJAX同步或异步流程图

    同步AJAX流程与异步基本一致,只是`open()`方法的第三个参数设为`false`,使得浏览器等待请求完成再继续执行后续代码。 总结来说,AJAX异步通信提供了更优秀的用户体验,因为它允许用户在等待服务器响应的同时进行...

    尚筹网-加餐-Ajax的同步和异步请求1

    ### 选择异步还是同步? - **异步**:适用于大部分场景,因为它能保持页面的响应性,避免用户感知到等待,提高用户体验。但需要注意,过多的异步请求可能会导致浏览器资源竞争,影响性能。 - **同步**:在某些需要...

    ajax同步和异步的优缺点

    对新手学ajax 有帮助。希望大家能够喜欢和利用。

    Ajax异步与同步方法封装的js文件

    2 同步:MyAjaxs " 要调用的方法页面 方法" 参数 function d {alert d["d"] ;} ;">调用方法:1 将下载好的Ajax js文件引用到页面 代码如下:<script src " js MyAjax js" type &...

    jQuery中的ajax async同步和异步详解

    在本文中,我们将详细讲解在jQuery的ajax方法中如何使用async参数控制请求是同步还是异步。 首先,我们需要理解什么是同步和异步请求。异步请求是指当一个请求发送给服务器后,浏览器不会等待服务器的响应,而是...

    jquery的ajax同步和异步的理解及示例

    最近的项目用了到AJAX同步。这个同步的意思是当JS代码加载到当前AJAX的时候会把页面里所有的代码停止加载,页面出去假死状态,当这个AJAX执行完毕后才会继续运行其他代码页面假死状态解除。 而异步则这个AJAX代码...

    原生ajax代码实现异步提交

    原生Ajax技术是Web开发中的一个关键组成部分,它允许网页在不刷新整个页面的情况下与服务器进行数据交互,实现异步通信。在这个场景中,我们讨论的是如何使用原生JavaScript代码来实现一个简单的异步提交功能,例如...

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

    需要注意的是,无论同步还是异步请求,都应当正确处理可能出现的错误,例如网络问题或服务器错误。对于异步请求,错误处理通常在回调函数中进行,而同步请求则可以在请求完成后立即检查状态并处理错误。 总的来说,...

    javascript发送ajax请求,获取返回值res,async 同步/异步

    javascript发送ajax请求,获取返回值res,async 同步/异步 var res = sendRequest({ url : "1.php", //necessary method : "post", params : { param1 : "123", param2 : "234" }, async : false });

    Ajax页面局部异步刷新技术

    ### Ajax页面局部异步刷新技术 ...此外,还需要注意编码、请求方式、同步/异步模式的选择等因素对请求的影响。在实际开发中,开发者可以根据具体需求灵活运用这些知识点,构建高效、流畅的Web应用。

    关于解决jquery同步异步的问题

    ### 关于解决jQuery同步异步的问题 在前端开发过程中,我们经常会使用到jQuery库来进行DOM操作及Ajax请求等。而在处理Ajax请求时,默认情况下jQuery的`$.ajax()`方法是采用异步的方式执行的,这对于大部分场景来说...

    用法 XMLHttpRequest的用法 ajax同步和异步的区别

    ### XMLHttpRequest的用法及AJAX同步与异步的区别 #### 一、XMLHttpRequest简介 `XMLHttpRequest`对象是实现客户端与服务器端异步交互的重要工具之一。它允许JavaScript执行HTTP请求,无需重新加载整个网页即可从...

    Ajax同步和异步问题浅析及解决方法

    在文档中提出了两种解决Ajax同步异步问题的方法: 1. 回调函数解决方案: 这种方法是在Ajax请求成功完成后,通过回调函数来执行依赖于异步数据返回的操作。例如,在文档提供的代码片段中: ```javascript $.get...

    程序同步与异步的区别

    - **异步(AJAX技术)**: AJAX(Asynchronous JavaScript and XML)技术允许在不重新加载整个页面的情况下更新部分网页内容。用户可以在等待服务器响应的同时继续与其他部分互动,从而提高了用户体验。 3. **日常...

    解决js ajax同步请求造成浏览器假死的问题

    总结一下,解决js ajax同步请求造成浏览器假死的问题的关键在于理解浏览器单线程的特性及其在执行同步请求时会阻塞UI线程的行为。开发者可以通过使用异步请求或将耗时的请求操作放入setTimeout等JavaScript定时器中...

    ajax 同步和异步XMLHTTP代码分析

    在实际应用中,选择同步还是异步取决于具体需求。如果需要即时更新数据并保持页面交互性,应选择异步。如果需要确保请求完成后才执行其他操作,同步模式可能是合适的。然而,对于可能需要较长时间才能完成的请求,...

    ajax中的async属性值之同步和异步及同步和异步区别

    jquery中ajax方法有个属性async用于控制同步和异步,默认是true,即ajax请求默认是异步请求,有时项目中会用到AJAX同步。这个同步的意思是当JS代码加载到当前AJAX的时候会把页面里所有的代码停止加载,页面出现假死...

    AJAX反编译(异步传输大集合)

    2. **异步传输**:在AJAX中,数据请求和页面渲染是并行进行的,而不是同步执行。这意味着用户可以继续浏览网页,而数据加载在后台进行。当服务器返回响应,XMLHttpRequest的readyState属性会改变,触发...

    flex与服务端通信的as封装源码(同步、异步两种方式)

    这篇资料提供了一套AS(ActionScript)源码,用于实现Flex客户端与服务端的交互,支持同步和异步两种通信方式,且采用HTTPService进行封装,避免了对BlazeDS的依赖。主要知识点包括: 1. **Flex与服务端通信**:...

    详解socket阻塞与非阻塞,同步与异步、I/O模型

    相反,异步模式下,客户端发起请求后,不需要等待结果,可以继续执行其他任务,服务端处理完成后再通过回调或通知方式将结果返回给客户端,如同使用Ajax进行后台请求,浏览器可以继续处理其他用户交互。 阻塞与非...

Global site tag (gtag.js) - Google Analytics