前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Ajax 异步&同步请求

Ajax 异步&同步请求

作者头像
奋飛
发布2019-08-15 10:22:13
3K0
发布2019-08-15 10:22:13
举报
文章被收录于专栏:Super 前端

XMLHttpRequest 支持同步和异步通信。但是,一般来说,出于性能原因,异步请求应优先于同步请求。同步请求阻止代码的执行,这会导致屏幕上出现“冻结”和无响应的用户体验。

一、简介

Ajax 请求最重要的问题是代码执行的顺序。最长遇到的问题是,我们定义一个变量接收 ajax 异步请求的返回结果,后续代码使用,然而后续代码在使用时该变量为初始值,始终得不到想要的结果!!!

二、示例

代码语言:javascript
复制
// 异步
var  email = "test@ptmind.com";
console.log(1);
jQuery.ajax({
	url: "/invite/sendEmailAjax.pt",
	type: "post",
	dataType: "text",
	async: true,
	data: "inviteEmails="+email,
	success: function(data){
		console.log(2);
	}
});
console.log(3);
// 结果:1->3->2
代码语言:javascript
复制
// 同步
var  email = "test@ptmind.com";
console.log(1);
jQuery.ajax({
	url: "/invite/sendEmailAjax.pt",
	type: "post",
	dataType: "text",
	async: false,
	data: "inviteEmails="+email,
	success: function(data){
		console.log(2);
	}
});
console.log(3);
// 结果:1->2->3

三、官方解释

By default, all requests are sent asynchronously (i.e. this is set to true by default). If you need synchronous requests, set this option to false.Cross-domain requests and dataType: "jsonp" requests do not support synchronous operation. Note that synchronous requests may temporarily lock the browser, disabling any actions while the request is active. async 默认是 true,即为异步方式,$.ajax 执行后,会继续执行 ajax 后面的脚本,直到服务器端返回数据后,触发 $.ajax 里的success 方法。若要将其设置为 false,则所有的请求均为同步请求,在没有返回值之前,同步请求将锁住浏览器,用户其它操作必须等待请求完成才可以执行。http://api.jquery.com/jQuery.ajax/

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2015年05月04日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、简介
  • 二、示例
  • 三、官方解释
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档