不同js异步函数同步的实现方法


Posted in Javascript onMay 28, 2016

不同函数达到同步的函数模拟

funcList是函数执行函数的队列,其中回调函数中flag=true是同步标记量

<script>
var flag = false;
function funcTest(t,func){
  setTimeout(function(){
   (function(param){
     console.log(param);
     func();
   }(t));
   },t*1000);
}
var funcList = [];
funcList.push(function(){funcTest(4,function(){
  flag = true;//同步标记量
})});//不同的异步函数添加进队列
funcList.push(function(){funcTest(3,function(){
  flag = true;
})});//不同的异步函数添加进队列
funcList.push(function(){funcTest(2,function(){
  flag = true;
})});//不同的异步函数添加进队列
dealFuncSync(funcList);
function dealFuncSync(funcList){
  function callBackSync(){
   if(!funcList||funcList.length==0){
     console.log('end');
     return;
   }
   flag = false;
   funcList.shift()();
   setTimeout(function(){
      if(flag) {//控制队列函数同步
       callBackSync();
      }else{
       setTimeout(arguments.callee,100);
      }
   },100);
  }
  callBackSync();
}
</script>

以上这篇不同js异步函数同步的实现方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
超级简单的图片防盗(HTML),好用
Apr 08 Javascript
修改jquery.lazyload.js实现页面延迟载入
Dec 22 Javascript
使用 JavaScript 进行函数式编程 (一) 翻译
Oct 02 Javascript
js实现简单的省市县三级联动效果实例
Feb 18 Javascript
基于jquery实现ajax无刷新评论
Aug 19 Javascript
js复制内容到剪贴板代码,js复制代码的简单实例
Oct 27 Javascript
Angular.JS中的指令引用template与指令当做属性详解
Mar 30 Javascript
详解使用vue-admin-template的优化历程
May 20 Javascript
vue项目使用axios发送请求让ajax请求头部携带cookie的方法
Sep 26 Javascript
Express结合Webpack的全栈自动刷新
May 23 Javascript
Vue.js中的高级面试题及答案
Jan 13 Javascript
JS中forEach()、map()、every()、some()和filter()的用法
May 11 Javascript
前端学习笔记style,currentStyle,getComputedStyle的用法与区别
May 28 #Javascript
浅谈jQuery 中的事件冒泡和阻止默认行为
May 28 #Javascript
jquery取消事件冒泡的三种方法(推荐)
May 28 #Javascript
深入理解事件冒泡(Bubble)和事件捕捉(capture)
May 28 #Javascript
jqueryMobile 动态添加元素,展示刷新视图的实现方法
May 28 #Javascript
jQuery Mobile动态刷新页面样式的实现方法
May 28 #Javascript
JQuery EasyUI Layout 在from布局自适应窗口大小的实现方法
May 28 #Javascript
You might like
php array_map()数组函数使用说明
2011/07/12 PHP
php数组去重复数据示例
2014/02/25 PHP
浅谈ThinkPHP的URL重写
2014/11/25 PHP
Yii基于CActiveForm的Ajax数据验证用法示例
2016/07/14 PHP
php变量与数组相互转换的方法(extract与compact)
2016/12/02 PHP
Laravel框架数据库迁移操作实例详解
2020/04/06 PHP
Jquery iframe内部出滚动条
2010/02/11 Javascript
一次失败的jQuery优化尝试小结
2011/02/06 Javascript
读jQuery之二(两种扩展)
2011/06/11 Javascript
浅析tr的隐藏和显示问题
2014/03/05 Javascript
javascript实现十六进制颜色值(HEX)和RGB格式相互转换
2014/06/20 Javascript
JavaScript使用replace函数替换字符串的方法
2015/04/06 Javascript
浏览器环境下JavaScript脚本加载与执行探析之动态脚本与Ajax脚本注入
2016/01/19 Javascript
javascript简单判断输入内容是否合法的方法
2016/05/11 Javascript
谈谈JavaScript中的几种借用方法
2016/08/09 Javascript
通过bootstrap全面学习less
2016/11/09 Javascript
基于Bootstrap实现城市三级联动
2017/11/23 Javascript
AngularJS发送异步Get/Post请求方法
2018/08/13 Javascript
Vue.js特性Scoped Slots的浅析
2019/02/20 Javascript
使用Three.js实现太阳系八大行星的自转公转示例代码
2019/04/09 Javascript
Layui 导航默认展开和菜单栏选中高亮设置的方法
2019/09/04 Javascript
vue实现多级菜单效果
2019/10/19 Javascript
vue渲染方式render和template的区别
2020/06/05 Javascript
[01:13:17]Secret vs NB 2018国际邀请赛小组赛BO2 第二场 8.19
2018/08/21 DOTA
python实现合并两个排序的链表
2019/03/03 Python
浅谈Python2之汉字编码为unicode的问题(即类似\xc3\xa4)
2019/08/12 Python
Python数据处理篇之Sympy系列(五)---解方程
2019/10/12 Python
Python实现钉钉订阅消息功能
2020/01/14 Python
python初步实现word2vec操作
2020/06/09 Python
Zooplus罗马尼亚:宠物食品和配件
2019/11/02 全球购物
报社实习生自荐信
2014/01/24 职场文书
人民调解协议书范本
2014/10/11 职场文书
2014年档案室工作总结
2014/12/01 职场文书
社区端午节活动总结
2015/02/11 职场文书
教师创先争优承诺书
2015/04/27 职场文书
80行代码写一个Webpack插件并发布到npm
2021/05/24 Javascript