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


Posted in Javascript onSeptember 29, 2015

项目中有这样一个需求,使用ajax加载数据返回页面并赋值,然后前端取出该值

这其中涉及到代码的顺序问题,有时后台还未返回数据,但已执行后面代码,

所以就会造成取不到值

$.ajax({ type: "post",  url: "admin/PfmOptionRuleItem.do", success: function(data){  $("#ruleItem").val(data.ruleItem); //① } }); return $("#ruleItem").val(); //②

如果①还未从后台返回数据 此时执行②就获取不到值

Ajax的第一个字母是asynchronous的开头字母,这意味着所有的操作都是并行的,完成的顺序没有前后关系。

$.ajax()的async参数总是设置成true,这标志着在请求开始后,其他代码依然能够执行。

如果把这个选项设置成false,这意味着所有的请求都不再是异步的了,这也会导致浏览器被锁死。

虽然官方不建议这么干,只是不能用太多,否则会造成用户体验不佳

举个栗子

alert("setp 1"); $.ajax({  url: "admin/PfmOptionRuleItem.do",  async: false,  success: function(data){   alert("hello ajax"); //①  } }); alert("setp 2"); //②

当把asyn设为false时,这时ajax的请求时同步的,也就是说,这个时候ajax块发出请求后,

他会等待在①这个地方,不会去向下执行②,直到①执行完毕

此时依次执行顺序为

setp 1

hello ajax

setp 2

如果async为true 则执行顺序为

setp 1

setp 2

hello ajax

关于本文给大家叙述的jQuery中的ajax async同步和异步,全部介绍完了,希望对大家有所帮助。

Javascript 相关文章推荐
用XMLDOM和ADODB.Stream实现base64编码解码实现代码
Nov 28 Javascript
自制的文件上传JS控件可支持IE、chrome、firefox etc
Apr 18 Javascript
js下将阿拉伯数字每三位一逗号分隔(如:15000000转化为15,000,000)
Jun 02 Javascript
jQuery中Form相关知识汇总
Jan 06 Javascript
使用three.js 画渐变的直线
Jun 05 Javascript
JavaScript 数组- Array的方法总结(推荐)
Jul 21 Javascript
bootstrap datetimepicker 日期插件在火狐下出现一条报错信息的原因分析及解决办法
Mar 08 Javascript
深入理解AngularJs-scope的脏检查(一)
Jun 19 Javascript
基于Vue渲染与插件的加载顺序的问题详解
Mar 05 Javascript
vue代码分割的实现(codesplit)
Nov 13 Javascript
node 标准输入流和输出流代码实例
Sep 19 Javascript
uniapp开发小程序的经验总结
Apr 08 Javascript
网页从弹窗页面单选框传值至父页面代码分享
Sep 29 #Javascript
pace.js页面加载进度条插件
Sep 29 #Javascript
js强制把网址设为默认首页
Sep 29 #Javascript
jQuery EasyUI Dialog拖不下来如何解决
Sep 28 #Javascript
JQuery实现左右滚动菜单特效
Sep 28 #Javascript
JS动态日期时间的获取方法
Sep 28 #Javascript
js电话号码验证方法
Sep 28 #Javascript
You might like
用PHP和ACCESS写聊天室(八)
2006/10/09 PHP
php实现递归的三种基本方式
2020/07/04 PHP
PHP+Oracle本地开发环境搭建方法详解
2019/04/01 PHP
JavaScript 无符号右移赋值操作
2009/04/17 Javascript
读jQuery之九 一些瑕疵说明
2011/06/21 Javascript
JS常用表单验证方法总结
2014/05/22 Javascript
JS制作手机端自适应缩放显示
2015/06/11 Javascript
jQuery实现带有上下控制按钮的简单多行滚屏效果代码
2015/09/04 Javascript
JS实现的自定义网页拖动类
2015/11/06 Javascript
JavaScript统计网站访问次数的实现代码
2015/11/18 Javascript
基于javascript简单实现对身份证校验
2021/01/25 Javascript
探索Javascript中this的奥秘
2016/12/11 Javascript
js实现百度登录框鼠标拖拽效果
2017/03/07 Javascript
lhgcalendar时间插件限制只能选择三个月的实现方法
2017/07/03 Javascript
深入解读Node.js中的koa源码
2019/06/17 Javascript
VUE页面中通过双击实现复制表格中内容的示例代码
2020/06/11 Javascript
Webpack5正式发布,有哪些新特性
2020/10/12 Javascript
python基础教程之元组操作使用详解
2014/03/25 Python
Python格式化css文件的方法
2015/03/10 Python
Swift 3.0在集合类数据结构上的一些新变化总结
2016/07/11 Python
使用Python对MySQL数据操作
2017/04/06 Python
回调函数的意义以及python实现实例
2017/06/20 Python
Tornado实现多进程/多线程的HTTP服务详解
2019/07/25 Python
详细介绍Python进度条tqdm的使用
2019/07/31 Python
python numpy矩阵信息说明,shape,size,dtype
2020/05/22 Python
利用Python实现Excel的文件间的数据匹配功能
2020/06/16 Python
css3实现元素环绕中心点布局的方法示例
2019/01/15 HTML / CSS
SteelSeries赛睿官网:游戏外设和配件的领先制造商(耳机、键盘、鼠标和鼠标垫)
2018/06/17 全球购物
彪马西班牙官网:PUMA西班牙
2019/06/18 全球购物
C语言笔试题回忆
2015/04/02 面试题
小学生安全保证书
2014/02/01 职场文书
上班看电影检讨书
2014/02/12 职场文书
医院护士见习期自我鉴定
2014/04/10 职场文书
工程售后服务方案
2014/06/08 职场文书
2015年教师党员自我评价材料
2015/03/04 职场文书
Ruby处理CSV数据方法详解
2022/04/18 Ruby