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 相关文章推荐
JS对文本框值的判断示例
Mar 10 Javascript
点击标签切换和自动切换DIV选项卡
Aug 10 Javascript
javascript动态控制服务器控件实例
Sep 05 Javascript
判断JS对象是否拥有某属性的方法推荐
May 12 Javascript
jQuery树形控件zTree使用小结
Aug 02 Javascript
javascript淘宝主图放大镜功能
Oct 20 Javascript
使用snowfall.jquery.js实现爱心满屏飞的效果
Jan 05 Javascript
Node接收电子邮件的实例代码
Jul 21 Javascript
原生js实现简单的模态框示例
Sep 08 Javascript
基于打包工具Webpack进行项目开发实例
May 29 Javascript
vue-cli 3 全局过滤器的实例代码详解
Jun 03 Javascript
微信小程序关键字变色实现代码实例
Dec 13 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
substr()函数中文版
2006/10/09 PHP
php UTF8 文件的签名问题
2009/10/30 PHP
对于PHP 5.4 你必须要知道的
2013/08/07 PHP
PHP后端银联支付及退款实例代码
2017/06/23 PHP
php-msf源码详解
2017/12/25 PHP
js 多浏览器分别判断代码
2010/04/01 Javascript
jQuery jqgrid 对含特殊字符json 数据的 Java 处理方法
2011/01/01 Javascript
js之事件冒泡和事件捕获详细介绍
2013/10/28 Javascript
深入理解Javascript作用域与变量提升
2013/12/09 Javascript
Javascript中各种trim的实现详细解析
2013/12/10 Javascript
JS完整获取IE浏览器信息包括类型、版本、语言等等
2014/05/22 Javascript
Node.js中创建和管理外部进程详解
2014/08/16 Javascript
详谈javascript中的cookie
2015/06/03 Javascript
JavaScript中localStorage对象存储方式实例分析
2017/01/12 Javascript
JS轮播图中缓动函数的封装
2020/11/25 Javascript
jQuery倒计时代码(超简单)
2017/02/27 Javascript
Vuex 使用及简单实例(计数器)
2018/08/29 Javascript
JS创建自定义对象的六种方法总结
2020/12/15 Javascript
[03:02]辉夜杯主赛事第二日 每日之星
2015/12/27 DOTA
Python中字典创建、遍历、添加等实用操作技巧合集
2015/06/02 Python
Python3实现Web网页图片下载
2016/01/28 Python
Collatz 序列、逗号代码、字符图网格实例
2017/06/22 Python
Python使用arrow库优雅地处理时间数据详解
2017/10/10 Python
Python代码块批量添加Tab缩进的方法
2018/06/25 Python
Python实现端口检测的方法
2018/07/24 Python
简单了解python单例模式的几种写法
2019/07/01 Python
python中的global关键字的使用方法
2019/08/20 Python
详解Python中string模块除去Str还剩下什么
2020/11/30 Python
Araks官网:纽约内衣品牌
2020/10/15 全球购物
2014年民主评议党员个人总结
2014/09/24 职场文书
学校领导干部民主生活会整改方案
2014/09/29 职场文书
班子群众路线教育实践个人对照检查材料思想汇报
2014/09/30 职场文书
公司出纳岗位职责
2015/03/31 职场文书
2015年司法所工作总结
2015/04/27 职场文书
Spring Boot配合PageHelper优化大表查询数据分页
2022/04/20 Java/Android
mysql sock文件存储了什么信息
2022/07/15 MySQL