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 高级篇之DOM文档,简单封装及调用、动态添加、删除样式(六)
Apr 07 Javascript
JS中Iframe之间传值的方法
Mar 11 Javascript
JQuery+CSS提示框实现思路及代码(纯手工打造)
May 07 Javascript
JavaScript实现在数组中查找不同顺序排列的字符串
Sep 26 Javascript
JavaScript的内存释放问题详解
Jan 21 Javascript
AngularJS中指令的四种基本形式实例分析
Nov 22 Javascript
详解JS中的快速排序与冒泡
Jan 10 Javascript
js实现4个方向滚动的球
Mar 06 Javascript
jQuery EasyUI 组件加上“清除”功能实例详解
Apr 11 jQuery
jQuery实现table表格checkbox全选的方法分析
Jul 04 jQuery
JS实现的tab页切换效果完整示例
Dec 18 Javascript
JavaScript中this函数使用实例解析
Feb 21 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
如何在Laravel之外使用illuminate组件详解
2020/09/20 PHP
javascript 面向对象思想 附源码
2009/07/07 Javascript
利用JS来控制键盘的上下左右键(示例代码)
2013/12/14 Javascript
Jquery仿IGoogle实现可拖动窗口示例代码
2014/08/22 Javascript
javascript实现日期时间动态显示示例代码
2015/09/08 Javascript
完美解决js传递参数中加号和&号自动改变的方法
2016/10/11 Javascript
Javascript 实现计算器时间功能详解及实例(二)
2017/01/08 Javascript
vue获取当前点击的元素并传值的实例
2018/03/09 Javascript
JS实现移动端触屏拖拽功能
2018/07/31 Javascript
vue 自定义提示框(Toast)组件的实现代码
2018/08/17 Javascript
vue项目中使用Svg的方法
2018/10/24 Javascript
基于elementUI实现图片预览组件的示例代码
2019/03/31 Javascript
简单了解TypeScript中如何继承 Error 类
2019/06/21 Javascript
微信小程序如何引用外部js,外部样式,公共页面模板
2019/07/23 Javascript
Vue监听滚动实现锚点定位(双向)示例
2019/11/13 Javascript
element-ui树形控件后台返回的数据+生成组织树的工具类
2020/03/05 Javascript
解决VUE mounted 钩子函数执行时 img 未加载导致页面布局的问题
2020/07/27 Javascript
vue项目,代码提交至码云,iconfont的用法说明
2020/07/30 Javascript
JavaScript获取时区实现过程解析
2020/09/24 Javascript
[02:40]DOTA2殁境神蚀者 英雄基础教程
2013/11/26 DOTA
[00:32]2018DOTA2亚洲邀请赛Mineski出场
2018/04/04 DOTA
Python 字符串定义
2009/09/25 Python
python3编码问题汇总
2016/09/06 Python
实例讲解Python爬取网页数据
2018/07/08 Python
python 使用pdfminer3k 读取PDF文档的例子
2019/08/27 Python
python 实现矩阵填充0的例子
2019/11/29 Python
Python读取xlsx数据生成图标代码实例
2020/08/12 Python
python绘制高斯曲线
2021/02/19 Python
美国礼品卡商城: Gift Card Mall
2017/08/25 全球购物
GoDaddy英国:全球排名第一的域名注册商
2018/06/08 全球购物
STAY JAPAN台湾:预订日本民宿
2018/07/22 全球购物
美国户外运动商店:Sun & Ski
2018/08/23 全球购物
美国相机和电子产品零售商:Beach Camera
2020/11/26 全球购物
小学感恩教育活动总结
2014/07/07 职场文书
2014年单位法制宣传日活动总结
2014/11/01 职场文书
2016计算机专业毕业生自荐信
2016/01/28 职场文书