广告
返回顶部
首页 > 资讯 > 前端开发 > html >如何理解ajax中的async属性值同步和异步及同步和异步区别
  • 663
分享到

如何理解ajax中的async属性值同步和异步及同步和异步区别

2024-04-02 19:04:59 663人浏览 独家记忆
摘要

这篇文章给大家介绍如何理解ajax中的async属性值同步和异步及同步和异步区别,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。Jquery中ajax方法有个属性async用于控制同步和

这篇文章给大家介绍如何理解ajax中的async属性值同步和异步及同步和异步区别,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

Jquery中ajax方法有个属性async用于控制同步和异步,默认是true,即ajax请求默认是异步请求,有时项目中会用到AJAX同步。这个同步的意思是当js代码加载到当前AJAX的时候会把页面里所有的代码停止加载,页面出现假死状态,当这个AJAX执行完毕后才会继续运行其他代码页面假死状态解除。而异步则这个AJAX代码运行中的时候其他代码一样可以运行。

ajax中async这个属性,用于控制请求数据的方式,默认是true,即默认以异步的方式请求数据。

一、async值为true (异步)

当ajax发送请求后,在等待server端返回的这个过程中,前台会继续 执行ajax块后面的脚本,直到server端返回正确的结果才会去执行success,也就是说这时候执行的是两个线程,ajax块发出请求后一个线程 和ajax块后面的脚本(另一个线程)

例如

$.ajax({  
     type:"POST", 
     url:"Venue.aspx?act=init", 
      dataType:"html", 
     success:function(result){  //function1()
       f1(); 
       f2();  
    } 
     failure:function (result) {  
      alert('Failed');  
     }, 
 } 
 function2();

在上例中,当ajax块发出请求后,他将停留function1(),等待server端的返回,但同时(在这个等待过程中),前台会去执行function2()。

二、async值为false (同步)

当执行当前AJAX的时候会停止执行后面的JS代码,直到AJAX执行完毕后时,才能继续执行后面的JS代码。

例如

$.ajax({  
     type:"POST", 
     url:"Venue.aspx?act=init", 
     dataType:"html", 
     async: false,
    success:function(result){  //function1()
       f1(); 
       f2(); 
     } 
    failure:function (result) {  
      alert('Failed');  
     }, 
 } 
 function2();

当把asyn设为false时,这时ajax的请求时同步的,也就是说,这个时候ajax块发出请求后,他会等待在function1()这个地方,不会去执行function2(),直到function1()部分执行完毕。

Ajax同步与异步的区别

var returnValue = null; 
xmlHttp = createXmlHttp(); 
xmlhttp.onreadystatechange = function() { 
  if(xmlhttp.readyState == 4 && xmlhttp.status == 200) { 
    if (xmlhttp.responseText == "true") { 
      returnValue = "true"; 
    } 
    else { 
      returnValue = "false"; 
    } 
  } 
}; 
xmlhttp.open("Post",url,true); //异步传输 
xmlhttp.setRequestHeader("If-Modified-Since","0"); //不缓存Ajax
xmlhttp.send(sendStr); 
return returnValue;

在异步时才可以用xmlHttpReq.onreadystatechange状态值!下面是异步和同步的不同调用方式:

Java

xmlHttpReq.open("GET",url,true);//异步方式
  xmlHttpReq.onreadystatechange = showResult; //showResult是回调函数名
  xmlHttpReq.send(null);
function showResult(){  
  if(xmlHttpReq.readyState == 4){   
   if(xmlHttpReq.status == 200){
   ******
   }
  }
}

Java

xmlHttpReq.open("GET",url,false);//同步方式  
      xmlHttpReq.send(null);  
      showResult(); //showResult虽然是回调函数名但是具体用法不一样~  
function showResult(){   
       //if(xmlHttpReq.readyState == 4){  这里就不用了,直接dosomething吧~  
        //if(xmlHttpReq.status == 200){  
          ******//dosomething  
        //}  
      //}  
}
xmlhttp.open("Post",url,true);

如果是同步(false),返回值是true或false,因为执行完send后,开始执行onreadystatechange,程序会等到onreadystatechange都执行完,取得responseText后才会继续执行下一条语句,所以returnValue一定有值。

    如果是异步(true),返回值一定是null,因为程序执行完send后不等xmlhttp的响应,而继续执行下一条语句,所以returnValue还没有来的及变化就已经返回null了。

    所有如果想获得xmlhttp返回值必须用同步,异步无法得到返回值。

    同步异步使用xmlhttp池时都要注意:取得xmlhttp时只能新建xmlhttp,不能从池中取出已用过的xmlhttp,因为被使用过的xmlhttp的readyState为4,所以同步异步都会send但不执行onreadystatechange。

关于如何理解ajax中的async属性值同步和异步及同步和异步区别就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

--结束END--

本文标题: 如何理解ajax中的async属性值同步和异步及同步和异步区别

本文链接: https://www.lsjlt.com/news/81738.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 如何理解ajax中的async属性值同步和异步及同步和异步区别
    这篇文章给大家介绍如何理解ajax中的async属性值同步和异步及同步和异步区别,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。jquery中ajax方法有个属性async用于控制同步和...
    99+
    2022-10-19
  • ajax同步和异步的区别有哪些
    这篇文章主要讲解了“ajax同步和异步的区别有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“ajax同步和异步的区别有哪些”吧! ...
    99+
    2022-10-19
  • jquery的ajax同步和异步的原理及用法
    这篇文章主要讲解了“jquery的ajax同步和异步的原理及用法”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“jquery的ajax同步和异步的原理及用法”...
    99+
    2022-10-19
  • Node.js中同步和异步编程的区别及使用方法
    目录一、进程和线程二、同步和异步同步阻塞异步问题一、进程和线程 代码编写完毕在编译的过程中计算机的内存中会开辟一个空间来存储代码,这个空间就相当于是进程,可以将进程类比于工厂的厂房,...
    99+
    2023-05-18
    Node.js中同步和异步 Node.js 同步 Node.js 异步
  • java 中同步、异步、阻塞和非阻塞区别详解
    java 中同步、异步、阻塞和非阻塞区别详解简单点说:阻塞就是干不完不准回来,一直处于等待中,直到事情处理完成才返回; 非阻塞就是你先干,我先看看有其他事没有,一发现事情被卡住,马上报告领导。我们拿最常用的send和recv两个函数来说吧....
    99+
    2023-05-31
    java 同步 异步
  • java中的同步交互和异步交互有什么区别
    同步交互:指发送一个请求,需要等待返回,然后才能够发送下一个请求,有个等待过程。异步交互:指发送一个请求,不需要等待返回,随时可以再发送下一个请求,即不需要等待。在线视频教程分享:java在线视频区别:一个需要等待,一个不需要等待,在部分情...
    99+
    2014-12-29
    java入门 java 同步交互 异步交互 区别
  • 了解 Java 同步和 Spring 同步的重要性及其在面试中的价值。
    Java 同步和 Spring 同步的重要性及其在面试中的价值 在编写 Java 程序时,同步是一个非常重要的概念。同步是指在多线程应用程序中,对共享资源的访问进行协调的机制。Java 中的同步可以通过关键字 synchronized 来实...
    99+
    2023-09-22
    面试 同步 spring
  • Python框架中的同步关键字和异步框架有什么区别?
    Python是一种高级编程语言,广泛用于Web应用程序的开发。Python框架中的同步关键字和异步框架是Web开发中的两个重要概念。同步关键字是一种常见的编程方式,它指的是在代码执行期间,代码中的操作必须按照顺序执行。而异步框架则是指在代...
    99+
    2023-06-24
    同步 关键字 框架
  • 如何理解JS的同步异步编程和EventLoop底层机制
    这篇文章主要讲解了“如何理解JS的同步异步编程和EventLoop底层机制”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何理解JS的同步异步编程和Even...
    99+
    2022-10-19
  • Python 中如何使用同步和异步编程来管理 Git?
    Git 是一款非常流行的版本控制工具,它可以让开发者更好地管理代码,协作开发和版本迭代。在 Python 中,我们可以使用 GitPython 库来实现 Git 的管理。在实际使用 GitPython 进行 Git 管理时,我们可以选择使...
    99+
    2023-11-07
    同步 git 异步编程
  • jQuery Ajax async=>false异步改为同步时如何解决导致浏览器假死的问题
    这篇文章主要介绍jQuery Ajax async=>false异步改为同步时如何解决导致浏览器假死的问题,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!大概代码如下: &nbs...
    99+
    2022-10-19
  • JavaScript中回调函数及区分下同步和异步回调的示例分析
    小编给大家分享一下JavaScript中回调函数及区分下同步和异步回调的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!1...
    99+
    2022-10-19
  • 如何在 PHP 中实现高效的异步编程和 API 同步?
    随着 Web 应用程序的复杂性不断增加,异步编程变得越来越重要。PHP 作为一种广泛使用的编程语言,也需要提供一种高效的异步编程机制。在本文中,我们将介绍如何在 PHP 中实现高效的异步编程和 API 同步。 一、什么是异步编程? 异步编程...
    99+
    2023-08-05
    异步编程 api 同步
  • Python 中的同步和异步编程:如何让 Git 操作更加高效?
    在现代软件开发中,版本控制是一个非常重要的环节,而 Git 作为目前最流行的分布式版本控制系统之一,其操作效率的提升一直是开发者们关注的焦点。在 Python 中,同步和异步编程是两种常用的编程方式,它们都有着自己的优缺点。在本文中,我们...
    99+
    2023-11-07
    同步 git 异步编程
  • 你知道Python中的数组是如何进行同步和异步编程的吗?
    Python语言作为一种高度灵活性和易用性的编程语言,因为其内置的高级数据结构和动态类型系统而在数据科学和AI领域中得到了广泛应用。而数组作为Python中最基本的数据结构之一,其在同步和异步编程中也扮演着重要的角色。在本文中,我们将深入探...
    99+
    2023-09-08
    同步 数组 异步编程
  • Bash 和 PHP:如何在同步响应中处理异常情况?
    在现代软件开发中,处理异常情况是非常重要的一环。无论是 Bash 还是 PHP,都提供了处理异常情况的机制。在本文中,我们将探讨如何在同步响应中处理异常情况,同时提供一些演示代码。 Bash 是一个在 Linux 和 macOS 等 Un...
    99+
    2023-06-28
    同步 响应 bash
  • JavaScript中的单线程和异步该如何理解
    小编今天带大家了解JavaScript中的单线程和异步该如何理解,文中知识点介绍的非常详细。觉得有帮助的朋友可以跟着小编一起浏览文章的内容,希望能够帮助更多想解决这个问题的朋友找到问题的答案,下面跟着小编一起深入学习“JavaScript中...
    99+
    2023-06-29
  • Java中如何实现重定向和异步编程的同时加载资源?
    Java是一门广泛使用的编程语言,它的强大功能和易于学习的特点使得它成为开发人员的首选。在Java应用程序中,重定向和异步编程是两个常见的功能,它们可以帮助开发人员提高应用程序的性能和响应速度。同时,Java还支持同时加载资源,这可以大大加...
    99+
    2023-11-07
    重定向 异步编程 load
  • Java编程中如何同时处理重定向、异步编程和资源加载问题?
    在Java编程中,经常需要同时处理重定向、异步编程和资源加载问题。这些问题都是非常常见的,也是开发人员需要解决的难题之一。本文将介绍如何在Java编程中同时处理这些问题,并提供相关的演示代码。 重定向问题 重定向是指将一个URL地址重...
    99+
    2023-11-07
    重定向 异步编程 load
  • Java编程中如何实现异步编程和重定向同时处理资源加载?
    在Java编程中,异步编程和重定向是两个非常常见的技术。在某些情况下,我们需要同时处理资源加载,并且需要使用异步编程和重定向技术,以提高应用程序的性能和响应速度。本文将介绍如何在Java编程中实现异步编程和重定向同时处理资源加载。 一、什...
    99+
    2023-11-07
    重定向 异步编程 load
软考高级职称资格查询
推荐阅读
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作