js异步编程小技巧详解


Posted in Javascript onAugust 14, 2017

异步回调是js的一大特性,理解好用好这个特性可以写出很高质量的代码。分享一些实际用的一些异步编程技巧。

1.我们有些应用环境是需要等待两个http请求或IO操作返回后进行后续逻辑的处理。而这种情况使用回调嵌套代码会显得很难维护,而且也没有充分使用js的异步优势。

看下实例(为了大家容易理解使用了jq作为示例)

$.get("获取数据1.html",function(data,status){
   $.get("获取数据2.html",function(data1,status1){
    //使用 data 和data1逻辑
  });
 });

这种代码明显需要等待上个ajax请求返回后才会进行第二个请求,效率很低,而且回调嵌很不利于逻辑。我们可以使用计数器的方式,每完成一个请求计数器加1 当计数器等于2时执行回调逻辑

var get_data
var get-data1
function next(){
  //使用 data 和data1逻辑
}
$.get("获取数据1.html",function(data,status){
  get_data=data
  (++over === all) && (next());
 });
$.get("获取数据2.html",function(data1,status1){
  get_data1=data1
  (++over === all) && (next());
   
});

这种方式两个http并行发送,极大的提高了效率

Javascript 相关文章推荐
几个高效,简洁的字符处理函数
Apr 12 Javascript
用js获取电脑信息(是使用与IE浏览器)
Jan 15 Javascript
基于mouseout和mouseover等类似事件的冒泡问题解决方法
Nov 18 Javascript
js判断当前页面在移动设备还是在PC端中打开
Jan 06 Javascript
js中获取键盘事件的简单实现方法
Oct 10 Javascript
JavaScript浏览器对象模型BOM(BrowserObjectModel)实例详解
Nov 29 Javascript
jQuery Ajax请求后台数据并在前台接收
Dec 10 Javascript
jQuery中clone()函数实现表单中增加和减少输入项
May 13 jQuery
canvas+gif.js打造自己的数字雨头像的示例代码
Oct 26 Javascript
JS在if中的强制类型转换方式
Jul 15 Javascript
css配合JavaScript实现tab标签切换效果
Oct 11 Javascript
全面解析js中的原型,原型对象,原型链
Jan 25 Javascript
js数字滑动时钟的简单实现(示例讲解)
Aug 14 #Javascript
使用yeoman构建angular应用的方法
Aug 14 #Javascript
AngularJS 购物车全选/取消全选功能的实现方法
Aug 14 #Javascript
使用D3.js制作图表详解
Aug 13 #Javascript
Vue-Cli中自定义过滤器的实现代码
Aug 12 #Javascript
react开发教程之React 组件之间的通信方式
Aug 12 #Javascript
vuejs+element-ui+laravel5.4上传文件的示例代码
Aug 12 #Javascript
You might like
php 设计模式之 单例模式
2008/12/19 PHP
《PHP编程最快明白》第四讲:日期、表单接收、session、cookie
2010/11/01 PHP
php循环创建目录示例分享(php创建多级目录)
2014/03/04 PHP
PHP实现将HTML5中Canvas图像保存到服务器的方法
2014/11/28 PHP
php获取错误信息的方法
2015/07/17 PHP
php实现算术验证码功能
2018/12/05 PHP
基于jQuery的的一个隔行变色,鼠标移动变色的小插件
2010/07/06 Javascript
jQuery中filter(),not(),split()使用方法
2010/07/06 Javascript
jquery 取子节点及当前节点属性值的方法
2014/08/24 Javascript
jquery实现可拖拽弹出层特效
2015/01/04 Javascript
基于JQuery实现图片上传预览与删除操作
2016/05/24 Javascript
Vue.js中组件中的slot实例详解
2017/07/17 Javascript
vue双花括号的使用方法 附练习题
2017/11/07 Javascript
实战node静态文件服务器的示例代码
2018/03/08 Javascript
微信小程序实现人脸检测功能
2018/05/25 Javascript
vue项目部署上线遇到的问题及解决方法
2018/06/10 Javascript
解决Layui数据表格中checkbox位置不居中的方法
2018/08/15 Javascript
js原生map实现的方法总结
2020/01/19 Javascript
Preload基础使用方法详解
2020/02/03 Javascript
JavaScript实现简单验证码
2020/08/24 Javascript
python实现求解列表中元素的排列和组合问题
2018/03/15 Python
pandas数据分组和聚合操作方法
2018/04/11 Python
使用PM2+nginx部署python项目的方法示例
2018/11/07 Python
Django 再谈一谈json序列化
2020/03/16 Python
Tensorflow卷积实现原理+手写python代码实现卷积教程
2020/05/22 Python
公务员培训自我鉴定
2013/09/19 职场文书
护士自我介绍信
2014/01/13 职场文书
《奇妙的国际互联网》 教学反思
2014/02/25 职场文书
大专生自荐书范文
2014/06/22 职场文书
农民工预备党员思想汇报
2014/09/14 职场文书
2015年学校党支部工作总结
2015/04/01 职场文书
2019年国庆祝福语(70句)
2019/09/19 职场文书
pytorch 一行代码查看网络参数总量的实现
2021/05/12 Python
Python机器学习之KNN近邻算法
2021/05/14 Python
浅谈Redis主从复制以及主从复制原理
2021/05/29 Redis
mysql备份策略的实现(全量备份+增量备份)
2021/07/07 MySQL