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 相关文章推荐
JavaScript Archive Network 集合
May 12 Javascript
JS如何将UTC格式时间转本地格式
Sep 04 Javascript
jquery属性选择器not has怎么写 行悬停高亮显示
Nov 13 Javascript
JS 数字转换研究总结
Dec 26 Javascript
js实现带圆角的两级导航菜单效果代码
Aug 24 Javascript
学习javascript面向对象 理解javascript原型和原型链
Jan 04 Javascript
JavaScript数组的定义及数字操作技巧
Jun 06 Javascript
浅析JavaScript中的array数组类型系统
Jul 18 Javascript
AngularJS 指令详细介绍
Jul 27 Javascript
Node.JS中事件轮询(Event Loop)的解析
Feb 25 Javascript
Javascript迭代、递推、穷举、递归常用算法实例讲解
Feb 01 Javascript
javascript实现的时间格式加8小时功能示例
Jun 13 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
1982年日本摄影师镜头下的中国孩子 那无忧无虑的童年
2020/03/12 杂记
基于PHP magic_quotes_gpc的使用方法详解
2013/06/24 PHP
PHP递归删除目录几个代码实例
2014/04/21 PHP
php通过exif_read_data函数获取图片的exif信息
2015/05/21 PHP
PHP用户验证和标签推荐的简单使用
2016/10/31 PHP
JS+CSS实现淡入式焦点图片幻灯切换效果的方法
2015/02/26 Javascript
ES6新特性之函数的扩展实例详解
2017/04/01 Javascript
微信小程序中input标签详解及简单实例
2017/05/18 Javascript
前端构建工具之gulp的配置与搭建详解
2017/06/12 Javascript
AngularJS基于provider实现全局变量的读取和赋值方法
2017/06/28 Javascript
微信小程序之滚动视图容器的实现方法
2017/09/26 Javascript
Vuex新手的理解与使用详解
2019/05/31 Javascript
js实现滑动滑块验证登录
2020/07/24 Javascript
[03:06]V社市场总监Dota2项目负责人Erik专访:希望更多中国玩家加入DOTA2
2014/07/11 DOTA
[47:31]完美世界DOTA2联赛PWL S3 INK ICE vs DLG 第一场 12.12
2020/12/16 DOTA
低版本中Python除法运算小技巧
2015/04/05 Python
Python多线程编程(四):使用Lock互斥锁
2015/04/05 Python
Python字符串和文件操作常用函数分析
2015/04/08 Python
浅述python中argsort()函数的实例用法
2017/03/30 Python
浅谈python内置变量-reversed(seq)
2017/06/21 Python
浅谈tensorflow1.0 池化层(pooling)和全连接层(dense)
2018/04/27 Python
详解python中的time和datetime的常用方法
2019/07/08 Python
简单了解Java Netty Reactor三种线程模型
2020/04/26 Python
python自定义函数def的应用详解
2020/06/03 Python
Python3.7安装PyQt5 运行配置Pycharm的详细教程
2020/10/15 Python
CSS3 中filter(滤镜)属性使用详解
2020/04/07 HTML / CSS
自定义html标记替换html5新增元素
2008/10/17 HTML / CSS
html5 css3网站菜单实现代码
2013/12/23 HTML / CSS
英国助听器购物网站:Hearing Direct
2018/08/21 全球购物
经典安踏广告词
2014/03/21 职场文书
2014年少先队工作总结
2014/12/03 职场文书
2014年科协工作总结
2014/12/09 职场文书
公司表扬信格式
2015/05/04 职场文书
总结Python使用过程中的bug
2021/06/18 Python
python基础之文件操作
2021/10/24 Python
抖音动画片,皮皮虾,《治愈系》动画在用这首REMIX作为背景音乐,Anak ,The last world with you完整版
2022/03/16 杂记