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 相关文章推荐
CSS常用网站布局实例
Apr 03 Javascript
javascript中字符串拼接需注意的问题
Jul 13 Javascript
jQuery中delegate和on的用法与区别详细解析
Jan 26 Javascript
JavaScript实现关键字高亮功能
Nov 12 Javascript
jQuery中Ajax的get、post等方法详解
Jan 20 Javascript
kindeditor编辑器点中图片滚动条往上顶的bug
Jul 05 Javascript
详解javascript数组去重问题
Nov 06 Javascript
Jquery插件easyUi实现表单验证示例
Dec 15 Javascript
javascript中的后退和刷新实现方法
Nov 10 Javascript
js 模仿锚点定位的实现方法
Nov 19 Javascript
Easyui和zTree两种方式分别实现树形下拉框
Aug 04 Javascript
JS实现鼠标按下拖拽效果
Jul 23 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下foreach提示Warning:Invalid argument supplied for foreach()的解决方法
2014/11/11 PHP
给WordPress中的留言加上楼层号的PHP代码实例
2015/12/14 PHP
PHP远程调试之XDEBUG
2015/12/29 PHP
thinkphp5 + ajax 使用formdata提交数据(包括文件上传) 后台返回json完整实例
2020/03/02 PHP
Javascript实现的分页函数
2006/12/22 Javascript
JQUERY实现左侧TIPS滑进滑出效果示例
2013/06/27 Javascript
js闭包的用途详解
2014/11/09 Javascript
详解AngularJS的通信机制
2015/06/18 Javascript
JQuery解析XML的方法小结
2016/04/02 Javascript
Javascript基础_简单比较undefined和null 值
2016/06/14 Javascript
浅析Javascript的自动分号插入(ASI)机制
2016/09/29 Javascript
AngularJS实现根据变量改变动态加载模板的方法
2016/11/04 Javascript
jQuery实现html table行Tr的复制、删除、计算功能
2017/07/10 jQuery
vue事件修饰符和按键修饰符用法总结
2017/07/25 Javascript
EasyUI创建人员树的实例代码
2017/09/15 Javascript
js动态添加表格逐行添加、删除、遍历取值的实例代码
2018/01/25 Javascript
对类Vue的MVVM前端库的实现代码
2018/09/07 Javascript
vue中使用vue-cli接入融云实现即时通信
2019/04/19 Javascript
JS异步错误捕获的一些事小结
2019/04/26 Javascript
Javascript组合继承方法代码实例解析
2020/04/02 Javascript
Vue循环遍历选项赋值到对应控件的实现方法
2020/06/22 Javascript
python批量替换页眉页脚实例代码
2018/01/22 Python
批量将ppt转换为pdf的Python代码 只要27行!
2018/02/26 Python
Python实现购物评论文本情感分析操作【基于中文文本挖掘库snownlp】
2018/08/07 Python
python如何制作英文字典
2019/06/25 Python
Django打印出在数据库中执行的语句问题
2019/07/25 Python
PyCharm刷新项目(文件)目录的实现
2020/02/14 Python
Python学习笔记之装饰器
2020/08/06 Python
HTML5拖放功能_动力节点Java学院整理
2017/07/13 HTML / CSS
英国虚拟主机服务商:eUKhost
2016/08/16 全球购物
无故旷工检讨书
2014/01/26 职场文书
影视广告专业求职信
2014/09/02 职场文书
警察群众路线整改措施
2014/09/26 职场文书
降价通知函
2015/04/23 职场文书
小区物业管理2015年度工作总结
2015/10/22 职场文书
Redis IP地址的绑定的实现
2021/05/08 Redis