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 相关文章推荐
页面调用单个swf文件,嵌套出多个方法。
Nov 21 Javascript
javascript中全局对象的parseInt()方法使用介绍
Dec 19 Javascript
JavaScript Serializer序列化时间处理示例
Jul 31 Javascript
ES6中非常实用的新特性介绍
Mar 10 Javascript
jQuery中deferred对象使用方法详解
Jul 14 Javascript
JS 滚动事件window.onscroll与position:fixed写兼容IE6的回到顶部组件
Oct 10 Javascript
jQuery源码解读之extend()与工具方法、实例方法详解
Mar 30 jQuery
BootStrap Select清除选中的状态恢复默认状态
Jun 20 Javascript
JavaScript代码调试方法实例小结
Jan 05 Javascript
JS实现继承的几种常用方式示例
Jun 22 Javascript
Vue.js实现备忘录功能
Jun 26 Javascript
微信提示 在浏览器打开 效果实现过程解析
Sep 10 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获得用户使用的代理服务器ip即真实ip
2006/12/31 PHP
dede全站URL静态化改造[070414更正]
2007/04/17 PHP
php mail to 配置详解
2014/01/16 PHP
android上传图片到PHP的过程详解
2015/08/03 PHP
使用SMB共享来绕过php远程文件包含的限制执行RFI的利用
2019/05/31 PHP
理清apply(),call()的区别和关系
2011/08/14 Javascript
JavaScript打字小游戏代码
2011/12/26 Javascript
四种参数传递的形式——URL,超链接,js,form表单
2015/07/24 Javascript
JS利用cookie记忆当前位置的防刷新导航效果
2015/10/15 Javascript
基于javascript实现tab选项卡切换特效调试笔记
2016/03/30 Javascript
Javascript之Number对象介绍
2016/06/07 Javascript
基于BootStrap实现局部刷新分页实例代码
2016/08/08 Javascript
Bootstrap选项卡学习笔记分享
2017/02/13 Javascript
BootStrap 页签切换失效的解决方法
2017/08/17 Javascript
使用webpack搭建vue项目及注意事项
2019/06/10 Javascript
微信小程序登录时如何获取input框中的内容
2019/12/04 Javascript
Python 随机生成中文验证码的实例代码
2013/03/20 Python
Python中使用urllib2防止302跳转的代码例子
2014/07/07 Python
使用Python标准库中的wave模块绘制乐谱的简单教程
2015/03/30 Python
在Linux上安装Python的Flask框架和创建第一个app实例的教程
2015/03/30 Python
python实现的简单抽奖系统实例
2015/05/22 Python
Django 构建模板form表单的两种方法
2020/06/14 Python
用CSS3打造HTML5的Logo(实现代码)
2016/06/16 HTML / CSS
HTML5 video 视频标签使用介绍
2014/02/03 HTML / CSS
喜诗官方在线巧克力店:See’s Candies
2017/01/01 全球购物
ALEX AND ANI:手镯,项链,耳环和更多
2017/04/20 全球购物
会计自我鉴定
2013/11/02 职场文书
2014年小学植树节活动方案
2014/03/02 职场文书
艺人经纪人岗位职责
2014/04/15 职场文书
环境日宣传活动总结
2014/07/09 职场文书
个人租房协议书
2014/11/28 职场文书
2015年党员个人自我评价
2015/03/03 职场文书
2015党建工作简报
2015/07/21 职场文书
2016大学生党校学习心得体会
2016/01/06 职场文书
pycharm2021激活码使用教程(永久激活亲测可用)
2021/03/30 Python
JavaScript实现优先级队列
2021/12/06 Javascript