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(视频与PPT)
Dec 27 Javascript
js读取配置文件自写
Feb 11 Javascript
AngularJS入门教程之Hello World!
Dec 06 Javascript
jquery判断密码强度的验证代码
Apr 22 Javascript
js中window.open的参数及注意注意事项
Jul 06 Javascript
利用AngularJs实现京东首页轮播图效果
Sep 08 Javascript
详解AngularJS1.x学习directive 中‘& ’‘=’ ‘@’符号的区别使用
Aug 23 Javascript
手写简单的jQuery雪花飘落效果实例
Apr 22 jQuery
Vue SPA单页应用首屏优化实践
Jun 28 Javascript
解决Js先触发失去焦点事件再执行点击事件的问题
Aug 30 Javascript
使用Angular9和TypeScript开发RPG游戏的方法
Mar 25 Javascript
vue 使用async写数字动态加载效果案例
Jul 18 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
基于Snoopy的PHP近似完美获取网站编码的代码
2011/10/23 PHP
Linux下实现PHP多进程的方法分享
2012/08/16 PHP
PHP zip扩展Linux下安装过程分享
2014/05/05 PHP
PHP实现仿百度文库,豆丁在线文档效果(word,excel,ppt转flash)
2016/03/10 PHP
ThinkPHP5 的简单搭建和使用详解
2018/11/15 PHP
PHP观察者模式实例分析【对比JS观察者模式】
2019/05/22 PHP
IE6、IE7中setAttribute不支持class/for/rowspan/colspan等属性
2011/08/28 Javascript
创建、调用JavaScript对象的方法集锦
2014/12/24 Javascript
利用JS判断字符串是否含有数字与特殊字符的方法小结
2016/11/25 Javascript
获取当前月(季度/年)的最后一天(set相关操作及应用)
2016/12/27 Javascript
通过jsonp获取json数据实现AJAX跨域请求
2017/01/22 Javascript
Bootstrap表单制作代码
2017/03/17 Javascript
JS中使用正则表达式g模式和非g模式的区别
2017/04/01 Javascript
Javascript实现数组中的元素上下移动
2017/04/28 Javascript
关于vue-resource报错450的解决方案
2017/07/24 Javascript
jQuery选择器之表单元素选择器详解
2017/09/19 jQuery
vue-devtools的安装步骤
2018/04/23 Javascript
微信小程序实现美团菜单
2018/06/06 Javascript
JavaScript实现学生在线做题计时器功能
2018/12/05 Javascript
微信小程序中使用 async/await的方法实例分析
2020/05/06 Javascript
JavaScript实现随机点名小程序
2020/10/29 Javascript
jquery实现点击左右按钮切换图片
2021/01/27 jQuery
Python调用系统底层API播放wav文件的方法
2017/08/11 Python
Python面向对象基础入门之编码细节与注意事项
2018/12/11 Python
Python3列表内置方法大全及示例代码小结
2019/05/10 Python
深入了解Django中间件及其方法
2019/07/26 Python
PyCharm搭建Spark开发环境的实现步骤
2019/09/05 Python
应用艺术毕业生的自我评价
2013/12/04 职场文书
幼儿园秋游感想
2014/03/12 职场文书
年会搞笑主持词
2014/03/27 职场文书
中学生操行评语
2014/04/24 职场文书
应聘教师自荐书
2014/06/16 职场文书
欢迎新生标语
2014/10/06 职场文书
用人单位终止解除劳动合同证明书
2014/10/06 职场文书
元旦联欢晚会主持词
2015/07/01 职场文书
公司致全体员工的感谢信
2019/06/24 职场文书