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与函数式编程解释
Apr 27 Javascript
解析javascript系统错误:-1072896658的解决办法
Jul 08 Javascript
微信WeixinJSBridge API使用实例
May 25 Javascript
javascript代码调试之console.log 用法图文详解
Sep 30 Javascript
jQuery Ajax实现跨域请求
Jan 21 Javascript
浅析Angular2子模块以及异步加载
Apr 24 Javascript
用node和express连接mysql实现登录注册的实现代码
Jul 05 Javascript
JS匿名函数和匿名自执行函数概念与用法分析
Mar 16 Javascript
JavaScript中创建原子的方法总结
Aug 26 Javascript
微信小程序实现搜索功能并跳转搜索结果页面
May 18 Javascript
vue 强制组件重新渲染(重置)的两种方案
Oct 29 Javascript
微信小程序实现上传照片代码实例解析
Aug 04 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 团购折扣计算公式
2011/11/24 PHP
php cc攻击代码与防范方法
2012/10/18 PHP
php获取服务器信息的实现代码
2013/02/04 PHP
PHP中配置IIS7实现基本身份验证的方法
2015/09/24 PHP
laravel学习教程之关联模型
2016/07/30 PHP
phpstudy隐藏index.php的方法
2020/09/21 PHP
快速保存网页中所有图片的方法
2006/06/23 Javascript
JQUERY dialog的用法详细解析
2013/12/19 Javascript
利用jQuery简单实现产品展示图片左右滚动功能(示例代码)
2014/01/02 Javascript
深入理解JavaScript系列(38):设计模式之职责链模式详解
2015/03/04 Javascript
ECMA5数组的新增方法有哪些及forEach()模仿实现
2015/11/03 Javascript
JavaScript获取浏览器信息的方法
2015/11/20 Javascript
javascript合并表格单元格实例代码
2016/01/03 Javascript
jquery实现简单的遮罩层
2016/01/08 Javascript
javascript实现文字无缝滚动
2016/12/27 Javascript
详解webpack打包第三方类库的正确姿势
2018/10/20 Javascript
axios实现简单文件上传功能
2019/09/25 Javascript
JavaScript实现图片伪异步上传过程解析
2020/04/10 Javascript
Python中用Decorator来简化元编程的教程
2015/04/13 Python
python发送邮件功能实现代码
2016/07/15 Python
Python操作SQLite数据库的方法详解【导入,创建,游标,增删改查等】
2017/07/11 Python
详解Python核心对象类型字符串
2018/02/11 Python
替换python字典中的key值方法
2018/07/06 Python
HTML5 离线应用之打造零请求、无流量网站的解决方法
2013/04/25 HTML / CSS
有750多个顶级品牌的瑞士时尚在线:ABOUT YOU
2017/01/04 全球购物
市场营销毕业生自荐信
2013/11/23 职场文书
社会实践心得体会
2014/01/03 职场文书
寒假思想汇报
2014/01/10 职场文书
企业安全生产目标责任书
2014/07/23 职场文书
新店开张活动方案
2014/08/24 职场文书
暑期培训班策划方案
2014/08/26 职场文书
学校党的群众路线教育实践活动领导班子对照检查材料
2014/09/25 职场文书
李强为自己工作观后感
2015/06/11 职场文书
2015年安全生产月工作总结
2015/07/27 职场文书
VUE中的v-if与v-show区别介绍
2022/03/13 Vue.js
PostgreSQL并行计算算法及参数强制并行度设置方法
2022/04/07 PostgreSQL