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 相关文章推荐
一个无限级XML绑定跨框架菜单(For IE)
Jan 27 Javascript
解析javascript系统错误:-1072896658的解决办法
Jul 08 Javascript
jquery引用方法时传递参数原理分析
Oct 13 Javascript
js禁止页面刷新与后退的方法
Jun 08 Javascript
JS查找字符串中出现次数最多的字符
Sep 05 Javascript
vue实现可增删查改的成绩单
Oct 27 Javascript
基于HTML5+JS实现本地图片裁剪并上传功能
Mar 24 Javascript
ligerUI---ListBox(列表框可移动的实例)
Nov 28 Javascript
angular6.0使用教程之父组件通过url传递id给子组件的方法
Jun 30 Javascript
vue给组件传递不同的值方法
Sep 29 Javascript
微信小程序把百度地图坐标转换成腾讯地图坐标过程详解
Jul 10 Javascript
小程序采集录音并上传到后台
Nov 22 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输出控制功能在简繁体转换中的应用
2006/10/09 PHP
PHP里的中文变量说明
2011/07/23 PHP
PHP中Socket连接及读写数据超时问题分析
2016/07/19 PHP
PHP快速排序算法实现的原理及代码详解
2019/04/03 PHP
对字符串进行HTML编码和解码的JavaScript函数
2010/02/01 Javascript
IE的fireEvent方法概述及应用
2013/02/22 Javascript
javascript正则表达式中的replace方法详解
2015/04/20 Javascript
jQuery获取上传文件的名称的正则表达式
2015/05/21 Javascript
纯js代码实现未知宽高的元素在指定元素中垂直水平居中显示
2015/09/12 Javascript
js实现兼容IE、Firefox的图片缩放代码
2015/12/08 Javascript
不用一句js代码初始化组件
2016/01/27 Javascript
JS获取IMG图片高宽的简单实例
2016/05/17 Javascript
利用angularjs1.4制作的简易滑动门效果
2017/02/28 Javascript
HTML5+Canvas调用手机拍照功能实现图片上传(下)
2017/04/21 Javascript
JavaScript之创意时钟项目(实例讲解)
2017/10/23 Javascript
vue组件的写法汇总
2018/04/12 Javascript
区别JavaScript函数声明与变量声明
2018/09/12 Javascript
vue+elementUI实现表格关键字筛选高亮
2020/10/26 Javascript
[05:17]DOTA2睡衣妹卖萌求签名 CJ第二天全明星影像
2013/07/28 DOTA
[02:51]DOTA2英雄基础教程 风暴之灵
2013/12/23 DOTA
django如何实现视图重定向
2019/07/24 Python
Pytorch实现神经网络的分类方式
2020/01/08 Python
PyQt5实现仿QQ贴边隐藏功能的实例代码
2020/05/24 Python
Windows下PyCharm配置Anaconda环境(超详细教程)
2020/07/31 Python
python中requests模拟登录的三种方式(携带cookie/session进行请求网站)
2020/11/17 Python
英国受欢迎的运动鞋和街头服装商店:Footasylum
2018/06/12 全球购物
eBay意大利购物网站:eBay.it
2019/09/04 全球购物
大二自我鉴定范文
2013/10/05 职场文书
给朋友的道歉信
2014/01/09 职场文书
社区志愿者活动方案
2014/08/18 职场文书
最美家庭活动方案
2014/08/31 职场文书
2014年党员干部四风问题自我剖析材料
2014/09/29 职场文书
创业计划书之水果店
2019/07/18 职场文书
mysql批量新增和存储的方法实例
2021/04/07 MySQL
Python中生成随机数据安全性、多功能性、用途和速度方面进行比较
2022/04/14 Python
Go web入门Go pongo2模板引擎
2022/05/20 Golang