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 相关文章推荐
让textarea控件的滚动条怎是位与最下方
Apr 20 Javascript
jquery 仿QQ校友的DIV模拟窗口效果源码
Mar 24 Javascript
js返回上一页并刷新代码整理
Dec 21 Javascript
javascript中负数算术右移、逻辑右移的奥秘探索
Oct 17 Javascript
node.js Web应用框架Express入门指南
May 28 Javascript
javascript实现获取cookie过期时间的变通方法
Aug 14 Javascript
jquery.cookie.js使用指南
Jan 05 Javascript
浅析BootStrap中Modal(模态框)使用心得
Dec 24 Javascript
详解vue 中使用 AJAX获取数据的方法
Jan 18 Javascript
Vue2.0父子组件传递函数的教程详解
Oct 16 Javascript
vue中Npm run build 根据环境传递参数方法来打包不同域名
Mar 29 Javascript
深度了解vue.js中hooks的相关知识
Jun 14 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 SDK之微信公众号支付代码详解
2015/12/09 PHP
PHP异常处理定义与使用方法分析
2017/07/25 PHP
PHP绕过open_basedir限制操作文件的方法
2018/06/10 PHP
如何实现动态删除javascript函数
2007/05/27 Javascript
jQuery写的日历(包括日历的样式及功能)
2013/04/23 Javascript
javascript中数组中求最大值示例代码
2013/12/18 Javascript
jQuery设置和获取HTML、文本和值示例
2014/07/08 Javascript
浅谈Javascript中深复制
2014/12/01 Javascript
详解jQuery移动页面开发中的ui-grid网格布局使用
2015/12/03 Javascript
JavaScript 链式结构序列化详解
2016/09/30 Javascript
node.js入门教程之querystring模块的使用方法
2017/02/27 Javascript
微信小程序城市定位的实现实例(获取当前所在国家城市信息)
2017/05/17 Javascript
vue2.0 循环遍历加载不同图片的方法
2018/03/06 Javascript
vue-cli项目根据线上环境分别打出测试包和生产包
2018/05/23 Javascript
JS获取今天是本月第几周、本月共几周、本月有多少天、是今年的第几周、是今年的第几天的示例代码
2018/12/05 Javascript
微信小程序 setData 对 data数据影响问题
2019/04/18 Javascript
javascript function(函数类型)使用与注意事项小结
2019/06/10 Javascript
vue使用一些外部插件及样式的配置代码
2019/11/18 Javascript
python线程池的实现实例
2013/11/18 Python
Python学习笔记(二)基础语法
2014/06/06 Python
Python递归遍历列表及输出的实现方法
2015/05/19 Python
深入讲解Python中面向对象编程的相关知识
2015/05/25 Python
Python 结巴分词实现关键词抽取分析
2017/10/21 Python
python解决字符串倒序输出的问题
2018/06/25 Python
Windows下Anaconda2安装NLTK教程
2018/09/19 Python
pyqt5实现俄罗斯方块游戏
2019/01/11 Python
Python3 Click模块的使用方法详解
2020/02/12 Python
python要安装在哪个盘
2020/06/15 Python
Python持续监听文件变化代码实例
2020/07/22 Python
CSS3 三维变形实现立体方块特效源码
2016/12/15 HTML / CSS
倩碧澳大利亚官网:Clinique澳大利亚
2019/07/22 全球购物
促销活动计划书
2014/05/02 职场文书
消防标语大全
2014/06/07 职场文书
中职生自荐信范文
2014/06/15 职场文书
JavaScript与JQuery框架基础入门教程
2021/07/15 Javascript
java开发双人五子棋游戏
2022/05/06 Java/Android