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 相关文章推荐
js完美的div拖拽实例代码
Jan 22 Javascript
js实现点击按钮后给Div图层设置随机背景颜色的方法
May 06 Javascript
浅谈JavaScript中运算符的优先级
Jul 07 Javascript
AngularJS中的$watch(),$digest()和$apply()区分
Apr 04 Javascript
1秒50万字!js实现关键词匹配
Aug 01 Javascript
Boostrap实现的登录界面实例代码
Oct 09 Javascript
使用js实现将后台传入的json数据放在前台显示
Aug 06 Javascript
vue插件实现v-model功能
Sep 10 Javascript
vue路由前进后退动画效果的实现代码
Dec 10 Javascript
Element-ui中元素滚动时el-option超出元素区域的问题
May 30 Javascript
Android 自定义view仿微信相机单击拍照长按录视频按钮
Jul 19 Javascript
Vue组件基础用法详解
Feb 05 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生成二维码时出现中文乱码的解决方法
2014/12/18 PHP
php对xml文件的增删改查操作实现方法分析
2017/05/19 PHP
JQuery跨Iframe选择实现代码
2010/08/19 Javascript
SeaJS入门教程系列之使用SeaJS(二)
2014/03/03 Javascript
js实现局部页面打印预览原理及示例代码
2014/07/03 Javascript
jQuery提示插件alertify使用指南
2015/04/21 Javascript
JS+html5制作简单音乐播放器
2020/09/13 Javascript
JS中正则表达式全局匹配模式 /g用法详解
2017/04/01 Javascript
Windows下使用Nodejs运行js的方法
2017/09/02 NodeJs
swiper自定义分页器使用方法详解
2020/09/14 Javascript
在小程序中使用Echart图表的示例代码
2018/08/02 Javascript
JavaScript防止全局变量污染的方法总结
2018/08/02 Javascript
Nodejs使用Mongodb存储与提供后端CRD服务详解
2018/09/04 NodeJs
JavaScript实现左右滚动电影画布
2020/02/06 Javascript
原生js实现随机点名
2020/07/05 Javascript
[41:08]2014 DOTA2国际邀请赛中国区预选赛 HGT VS NE
2014/05/22 DOTA
[02:10]2018DOTA2亚洲邀请赛赛前采访-Liquid
2018/04/03 DOTA
举例讲解Python中字典的合并值相加与异或对比
2016/06/04 Python
Django使用Celery异步任务队列的使用
2018/03/13 Python
对pandas读取中文unicode的csv和添加行标题的方法详解
2018/12/12 Python
python实现逐个读取txt字符并修改
2018/12/24 Python
Python标准库使用OrderedDict类的实例讲解
2019/02/14 Python
Python字典的概念及常见应用实例详解
2019/10/30 Python
python 普通克里金(Kriging)法的实现
2019/12/19 Python
为奢侈时尚带来了慈善元素:Olivela
2018/09/29 全球购物
了解AppleShare protocol(AppleShare协议)吗
2015/08/28 面试题
扩大国家免疫规划实施方案
2014/03/21 职场文书
水污染治理工程专业自荐信
2014/06/21 职场文书
实习生矿工检讨书
2014/10/13 职场文书
2014年社区综治工作总结
2014/11/17 职场文书
学校党风廉政建设调研报告
2015/01/01 职场文书
护士节慰问信
2015/02/15 职场文书
个人简历自我评价怎么写
2015/03/10 职场文书
银行客户经理岗位职责
2015/04/09 职场文书
深度好文:50条没人告诉你的人生经验,句句精辟
2019/08/22 职场文书
MySQL系列之三 基础篇
2021/07/02 MySQL