ajax同步请求和异步请求

前序

最近好长时间没写博客了,主要由于前一段时间出差,没啥心思写,今天开始重新继续。进入主题,ajax的同步请求和异步请求,这个在前端面试中经常会出现的问题,在实际开发中也容易,有时候被疏忽了就会照成偶尔出现的问题。我们先来看一下,什么是同步请求,这里主要以jquery的ajax请求为例,后端示例使用的java。

什么是同步请求?

ajax同步请求,是指当前端通过ajax发送一个请求到服务端,JavaScript 会等到服务器响应就绪才继续执行。
jquery中怎么设置同步请求,这个就太简单了,不用啰嗦了吧,把async参数设置为false即可,默认是true

这里看一个例子:
前端代码:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
	</head>
	<body>
		<input id="t1" />
		<button onclick="asynfalse()">同步请求</button>
		
	</body>
	<script type="text/javascript" src="js/jquery-3.3.1.min.js"></script>
	<script type="text/javascript">
		function asynfalse(){
			$.ajax({
				type:"post",
				url:"http://localhost:8090/t1",
				async:false,
				success:function(data){
					$("#t1").val(data);
				}
			});
		}
	</script>

</html>

请求http://localhost:8090/t1这个接口时,我们让后端接口等待20秒钟后返回,我们会看到效果是等待很久才看到输入框赋值hello
在这里插入图片描述

什么是异步请求?

异步请求:ajax发送请求后,JavaScript 无需等待服务器的响应,继续执行接下来的代码,等到响应成功以后,执行响应的结果;

还是上面那个例子,我们改成异步,再加一句代码:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
	</head>
	<body>
		<input id="t1" />
		<button onclick="asynfalse()">异步请求</button>
		
	</body>
	<script type="text/javascript" src="js/jquery-3.3.1.min.js"></script>
	<script type="text/javascript">
		function asynfalse(){
			$.ajax({
				type:"post",
				url:"http://localhost:8090/t1",
				async:true,
				success:function(data){
					$("#t1").val(data);
				}
			});
			$("#t1").val('world!');
		}
	</script>

</html>

执行结果:
在这里插入图片描述
此时可以看到,我没有点击异步提交按钮时input没有值,当我点击后变成了world!,然后过了一会变成了hello

比较同步和异步请求

1、异步请求比同步请求性能好;
2、异步请求比同步请求体验好;
3、同步请求,当请求失败时,会导致应用程序会挂起或停止,在web中经常表现为卡死。
4、异步可以同时发多个请求,同步只能等一个请求结束后,才能执行下一个请求。

好了,到这里了,希望各位小伙伴看了这篇文章后,以后写代码一定得注意使用异步和同步。

  • 7
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ajax同步请求和异步请求的区别主要体现在请求的方式和处理的方式上。 同步请求是指在发送请求后,页面会停止加载,直到服务器返回响应结果后才会继续加载。在同步请求中,页面会一直等待响应返回,并且请求和响应是顺序进行的。同步请求的优点是可以确保请求和响应的顺序,但缺点是在等待响应时页面会出现卡顿或假死现象,用户体验较差。 异步请求是指在发送请求后,页面可以继续加载,而不会停止等待响应结果。在异步请求中,请求和响应是并行进行的,不会影响页面的加载和用户的操作。异步请求的优点是可以提高页面的响应速度和用户体验,但缺点是无法确保请求和响应的顺序。 在处理方式上,同步请求会阻塞浏览器的UI线程,用户无法进行其他操作,直到请求完成。而异步请求会在后台进行,不会阻塞浏览器,用户可以继续操作页面。在处理请求结果时,同步请求会直接返回请求的结果,而异步请求需要在回调函数中处理请求的结果。 综上所述,ajax同步请求和异步请求的区别在于请求的方式和处理的方式。同步请求在等待响应时会阻塞页面加载,而异步请求可以在页面加载的同时进行请求同步请求可以确保请求和响应的顺序,但用户体验较差,而异步请求可以提高页面的响应速度和用户体验,但无法确保请求和响应的顺序。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值