ajax同步和异步的区别

article/2025/8/28 4:46:45

一、同步访问和异步访问的区别,先从概念上区别:
1、同步的概念应该是来自于操作系统中关于同步的概念。
2、不同进程为协同完成某项工作而在先后次序上调整(通过阻塞,唤醒等方式)。同步强调的是顺序性,谁先谁后;异步则不存在这种顺序性。
3、同步:浏览器访问服务器请求,用户看得到页面刷新,重新发请求,等请求完,页面刷新,新内容出现,用户看到新内容,进行下一步操作。
4、异步:浏览器访问服务器请求,用户正常操作,浏览器后端进行请求。等请求完,页面不刷新,新内容也会出现,用户看到新内容。
二、同步访问的代码详细说明
以java的springmvc为例子。
页面端:首先是html端(jsp端),用户操作界面后发送请求到后台,不管是form表单提交,还是ajax提交,都可以设置请求为同步的

<!--form表单提交 -->
<form class="log-page" id="loginForm"/><h3>登录您的账号</h3><div class="input-prepend"><span class="add-on"><i class="icon-user"></i></span><input class="input-xlarge" type="text" name="username" placeholder="邮箱账号" value="1121121@11.com"/></div>...
</form>
<!--js控制ajax提交表单 -->
function loginSave() {if($.trim(username)==''){alert('账号不能为空');isBegin=1;return false;...var aa = "http://www.baidu.com";...$.ajax({type : "POST",async : false, // 设置同步方式  false代表异步,true代表同步cache : false,url : aa,data : $("#loginForm").serializeArray(),success : function(result) {result = eval("(" + result + ")");if (result.status == 'true' || result.status == true) {window.location.href=bb;}else{}}});}

服务端:然后后台接收请求后进行处理了在返回

/***  这里是springmvc的正常post请求*/@RequestMapping(value = "/list")public String list(Model model, HttpServletRequest request,String flag,String studentName)throws Exception {//select date_format(insertDate, '%Y-%m-%d %H:%i:%s')//CONVERT(varchar, insertDate, 120 )//to_char(insertDate,'yyyy-mm-dd,hh24:mi:ss')String sql="select a.* from t_student a where 1=1 ";if(studentName!=null&&!"".equals(studentName)){sql+=" and studentName like '%"+studentName+"%'";}sql+=" order by id desc";List list = db.queryListForPage(sql, request);request.setAttribute("list", list);return "/admin/student/list";}/*** 这里是springmvc的ajax提交*/@RequestMapping(value = "/editSave")public ResponseEntity editSave(Model model,HttpServletRequest request,Long id,String flag,String studentName,String age,String sex,String remark) throws Exception{int result = 0;if(id!=null){String sql="update t_student set studentName=?,age=?,sex=?,remark=? where id=?";result = db.update(sql, new Object[]{studentName,age,sex,remark,id});}else{String sql="insert into t_student(studentName,age,sex,remark) values(?,?,?,?)";result = db.update(sql, new Object[]{studentName,age,sex,remark});}if(result==1){return renderData(true,"操作成功",null);}else{return renderData(false,"操作失败",null);}}

上面两段代码,一个是post请求使用,一个是ajax请求使用,都是同步的,也就是说用户的下一步操作必须等到代码执行完成后。

讲解:当页面端提交后,整个页面是不能点击的,必须要等到服务端处理完成后返回到页面端,用户才能继续点击页面,进行下一步操作,这样一个等待的流程叫做同步,看效果截图:
同步异步1
三、异步访问的代码详细说明
以java的springmvc为例子。

页面端:首先是html端(jsp端),用户操作界面后发送请求到后台,ajax可以设置为异步

function loginSave() {if($.trim(username)==''){alert('账号不能为空');isBegin=1;return false;...var aa = "http://www.baidu.com";...$.ajax({type : "POST",async : false, // 设置同步方式  false代表异步,true代表同步cache : false,url : aa,data : $("#loginForm").serializeArray(),success : function(result) {result = eval("(" + result + ")");if (result.status == 'true' || result.status == true) {window.location.href=bb;}else{}}});}

服务端:用户点击后,程序还是会运行,但是界面端用户就不需要等待了,可以直接进行其他操作

/*** 这里是springmvc的ajax提交,可以进行异步操作,其实同步异步发生在客户端,服务端还是照常进行的,服务端只管命令来了一行行代码执行。*/@RequestMapping(value = "/editSave")public ResponseEntity editSave(Model model,HttpServletRequest request,Long id,String flag,String studentName,String age,String sex,String remark) throws Exception{int result = 0;if(id!=null){String sql="update t_student set studentName=?,age=?,sex=?,remark=? where id=?";result = db.update(sql, new Object[]{studentName,age,sex,remark,id});}else{String sql="insert into t_student(studentName,age,sex,remark) values(?,?,?,?)";result = db.update(sql, new Object[]{studentName,age,sex,remark});}if(result==1){return renderData(true,"操作成功",null);}else{return renderData(false,"操作失败",null);}}

上面两段代码,ajax请求使用,可以设置为异步,下一步操作可以不用等待服务器代码执行完成后就可以进行其他操作了。

讲解:当页面端提交后,整个页面是可以点击的,不是必须要等到服务端处理完成后返回到页面端,用户就可以继续点击页面,进行下一步操作,这样一流程叫做异步,看效果截图:

同步异步2


http://chatgpt.dhexx.cn/article/CUOdGJLv.shtml

相关文章

C++ LinuxWebServer项目(5)同步异步日志系统

一、前言 对于任何一个服务器而言,日志系统的设计是非常重要的,尝试设计一个简易的同步异步日志系统来完成系统日志的记录。 二、基础知识 日志,由服务器自动创建,并记录运行状态,错误信息,访问数据的文件。 同步日志,日志写入函数与工作线程串行执行,由于涉及到I…

一文搞懂同步异步阻塞非阻塞

相信很多人在面试的过程中&#xff0c;都被问到过同步和异步的区别、阻塞和非阻塞的区别&#xff0c;以及这两对关系又有什么联系&#xff1f;本文尽可能从专业的角度&#xff0c;用易懂的语言&#xff0c;帮助大家理解 01 前置知识 用户空间和内核空间 操作系统可以支持多个…

同步异步半同步分离式通信

同步通信&#xff1a;采用统一的时钟信号 读数据 T1上升沿主设备给出从设备地址 T2上升沿给出读命令 T3上升沿读数据 T4上升沿撤销 写数据 T1上升沿主设备给出从设备地址 T1下降沿给出数据 T2上升沿给写命令 T4上升沿撤销 异步通信分为三类&#xff1a; 不互锁&#…

一篇文章理解 同步异步、阻塞非阻塞

前述 同步异步&#xff0c;阻塞非阻塞是一些非常常见的概念&#xff0c;但是对于开发者来说往往是用到了很难说清楚。 笔者专门整理了下这方面的概念&#xff0c;作此文以记之。 这部分内容可能存在一些争议&#xff0c;如有不同意见欢迎评论交流。 概念 个人理解同步异步与阻…

ES6同步异步处理

同步和异步 1.同步就是代码从上而下依次执行&#xff0c;除了函数或则回调函数 2.异步也有先后之分但是不明显&#xff0c;等js代码先执行同步后再去执行异步的代码. 如何处理同步异步的问题&#xff08;ES6的Promise&#xff09; 接上面&#xff0c;看下面的代码 var arr[…

前端学习-同步异步问题

在做实作课作品时&#xff0c;出现过对象中变量访问不到的情况&#xff0c;查阅相关资料发现时同步异步的问题&#xff0c;这篇文章帮助我理清思路&#xff0c;希望也能帮助你们更好地理解同步异步。 一、什么是同步/异步任务&#xff1f; 同步任务&#xff1a;指的是在主线程…

dubbo同步异步调用

通常我们通过dubbo调用服务接口&#xff0c;等待提供方处理完响应结果&#xff0c;这是同步调用&#xff1b;也是默认的调用方式。通过查看原吗DubboInvoker可以看到&#xff1a; 整体来说有三种方式&#xff1a; 1、是否关注结果&#xff0c;returntrue关注&#xff0c;默认也…

理解:什么是同步和异步?什么是阻塞和非阻塞?

一、同步和异步 同步与异步是指访问数据的机制&#xff0c;同步一般指主动请求并等待IO操作完成的方式。 异步则指主动请求数据后便可以继续处理其它任务&#xff0c;随后等待IO操作完毕的通知。 同步和异步最大的区别就在于&#xff1a;同步需要等待&#xff0c;异步不需要等…

CPUGPU加速计算

1、CPU(Centrol Processing Unit) CPU上的大部分面积做了cache 和控制逻辑&#xff0c;天然适合做复杂串行程序&#xff1b; 2、GPU(Graphic Processing Unit): GPU有更多的晶体管用于数据处理&#xff0c;特别适用于解决并行计算的问题。可以使程序执行速度加快。为处理图形…

tensorflow使用GPU加速

测试faster-rcnn时&#xff0c;cpu计算速度较慢&#xff0c;调整代码改为gpu加速运算 将 with tf.Session() as sess: 替换为 1 gpu_options tf.GPUOptions(per_process_gpu_memory_fraction0.9) 2 with tf.Session(configtf.ConfigProto(gpu_optionsgpu_options,log_device_…

GPU 及其加速库简介

文章目录 一、GPU 与 CPU 简介1、GPU 与 CPU 的区别2、GPU 分类3、GPU&#xff08;NVIDIA A100 &#xff09; 介绍 二、CUDA 简介1、多版本 CUDA 切换2、为各种 NVIDIA 架构匹配 CUDA arch 和 gencode 三、OpenCL 简介1、OpenCL 平台模型2、OpenCL 执行模型 四、参考资料 一、G…

Pytorch使用GPU加速的步骤

CUDA&#xff08;Compute Unified Device Architecture&#xff09;&#xff0c;是显卡厂商NVIDIA推出的运算平台。 CUDA是一种由NVIDIA推出的通用并行计算架构&#xff0c;该架构使GPU能够解决复杂的计算问题。近些年来&#xff0c;显卡的计算能力越来越强大&#xff0c;如果只…

Python程序如何用GPU加速:Tesla、CUDA、Numba

概念解析 首先要明白&#xff0c;普通的Python代码是无法使用GPU加速的&#xff0c;只能在GPU上跑针对GPU设计的程序。 硬件加速必须要用硬件语言实现。 查询PythonGPU关键字&#xff0c;除了TensorFlow&#xff0c;另外出镜率比较高的几个概念是&#xff1a;Numba、CUDA、PyCU…

什么是 GPU 加速的计算?

什么是 GPU 加速的计算? GPU 加速计算是指同时采用图形处理单元 (GPU) 和 CPU&#xff0c;以加快科学、分析、设计、消费者和企业应用程序的速度。GPU 加速器于 2007 年由 NVIDIA 率先推出&#xff0c;现已在世界各地为政府实验室、大学、公司以及中小型企业的高能效数据中心提…

MATLAB上的GPU加速计算

概述 怎样在MATLAB上做GPU计算呢?主要分为三个步骤&#xff1a;数据的初始化、对GPU数据进行操作、把GPU上的数据回传给CPU 一、数据的初始化 首先要进行数据的初始化。有两种方法可以进行初始化&#xff1a;一是先在CPU上设置好数据然后拷贝到GPU&#xff1b;二是直接在GPU…

常用的python gpu加速方法

在使用 PyCharm进行机器学习的时候&#xff0c;我们常常需要自己创建一些函数&#xff0c;这个过程中可能会浪费一些时间&#xff0c;在这里&#xff0c;我们为大家整理了一些常用的 Python加速方法&#xff0c;希望能给大家带来帮助。 在 Python中&#xff0c;我们经常需要创建…

Matlab 应用GPU加速

由于GPU近几年地迅速发展&#xff0c;GPU在多线程计算等方面逐渐超越CPU成为计算的主力军。而Matlab是常用的数学应用软件&#xff0c;现在讲解一下如何在Matlab中使用GPU加速计算 文章目录 0. 必要条件1.给GPU传输数据1.1 CPU的数据复制到GPU1.2 直接在GPU上设置数据&#xf…

tensorflow的GPU加速计算

参考 tensorflow的GPU加速计算 - 云社区 - 腾讯云 一、概述 tensorflow程序可以通过tf.device函数来指定运行每一个操作的设备&#xff0c;这个设备可以是本地的CPU或者GPU&#xff0c;也可以是某一台远程的服务器。tensorflow会给每一个可用的设备一个名称&#xff0c;tf.…

Pytorch使用GPU加速

1. 可以在cmd窗口输入nvidia-smi命令来确认自己的显卡是否有CUDA。 没有的话&#xff0c;需要安装。&#xff08;搜CUDA官网按照步骤来&#xff09; 2. 然后安装pythorch。 必须安装的有torch和torchvision两个包&#xff0c; &#xff01;注意不要直接在Pycharm中自动下…

一文读懂:GPU加速是什么?

众所周知&#xff0c;网页不仅应该被快速加载&#xff0c;同时还应该流畅运行&#xff0c;比如快速响应的交互&#xff0c;如丝般顺滑的动画…… 一. GPU加速能做什么&#xff1f; 首先我们要了解什么是16ms优化 大多数设备的刷新频率是60次/秒&#xff0c;&#xff08;1000…