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对象的支持
Jul 25 Javascript
日期处理的js库(迷你版)--自建js库总结
Nov 21 Javascript
JavaScript制作windows经典扫雷小游戏
Mar 31 Javascript
谈谈我对JavaScript原型和闭包系列理解(随手笔记8)
Dec 24 Javascript
基于javascript实现彩票随机数生成(简单版)
Apr 17 Javascript
JS弹出新窗口被拦截的解决方法
Aug 09 Javascript
纯js模仿windows系统日历
Feb 04 Javascript
微信小程序scroll-view实现横向滚动和上拉加载示例
Mar 06 Javascript
javascript 中select框触发事件过程的分析
Aug 01 Javascript
简单了解小程序+node梳理登陆流程
Jun 24 Javascript
JSX在render函数中的应用详解
Sep 04 Javascript
详解如何修改 node_modules 里的文件
May 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中使用url传递数组的方法
2015/02/11 PHP
php专用数组排序类ArraySortUtil用法实例
2015/04/03 PHP
详解PHP中foreach的用法和实例
2016/10/25 PHP
Thinkphp5+uploadify实现的文件上传功能示例
2018/05/26 PHP
PHP中迭代器的简单实现及Yii框架中的迭代器实现方法示例
2020/04/26 PHP
自己动手制作jquery插件之自动添加删除行功能介绍
2011/10/14 Javascript
JS图片切换的具体方法(带缩略图版)
2013/11/12 Javascript
js实现键盘操作实现div的移动或改变的原理及代码
2014/06/23 Javascript
javascript实现点击按钮弹出一个可关闭层窗口同时网页背景变灰的方法
2015/05/13 Javascript
jquery无限级联下拉菜单简单实例演示
2015/11/23 Javascript
jquery.Callbacks的实现详解
2016/11/30 Javascript
js仿微信公众平台打标签功能
2017/04/08 Javascript
使用vue和datatables进行表格的服务器端分页实例代码
2017/06/07 Javascript
nodejs判断文件、文件夹是否存在及删除的方法
2017/11/10 NodeJs
解决vue 打包发布去#和页面空白的问题
2018/09/04 Javascript
详解微信小程序入门从这里出发(登录注册、开发工具、文件及结构介绍)
2020/07/21 Javascript
Python构造自定义方法来美化字典结构输出的示例
2016/06/16 Python
python开发利器之ulipad的使用实践
2017/03/16 Python
Python实现矩阵转置的方法分析
2017/11/24 Python
Pandas统计重复的列里面的值方法
2019/01/30 Python
判断python对象是否可调用的三种方式及其区别详解
2019/01/31 Python
pytorch 获取层权重,对特定层注入hook, 提取中间层输出的方法
2019/08/17 Python
Tensorflow的常用矩阵生成方式
2020/01/04 Python
怎么解决pycharm license Acti的方法
2020/10/28 Python
Python爬虫实现selenium处理iframe作用域问题
2021/01/27 Python
5分钟让你掌握css3阴影、倒影、渐变小技巧(小编推荐)
2016/08/15 HTML / CSS
纯CSS3实现扇形动画菜单(简化版)实例源码
2017/01/17 HTML / CSS
10分钟理解CSS3 FlexBox弹性布局
2018/12/20 HTML / CSS
Vans荷兰官方网站:美国南加州的原创极限运动潮牌
2018/01/23 全球购物
爱尔兰最大的体育零售商:Life Style Sports
2019/06/12 全球购物
软件工程专业推荐信
2013/10/28 职场文书
工程管理造价应届生求职信
2013/11/13 职场文书
教师个人剖析材料
2014/02/05 职场文书
关于青春的演讲稿三分钟
2014/08/22 职场文书
离婚协议书范本(2014版)
2014/09/28 职场文书
装饰施工员岗位职责
2015/04/11 职场文书