不同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 相关文章推荐
javascript中巧用“闭包”实现程序的暂停执行功能
Apr 04 Javascript
jQuery 隔行换色 支持键盘上下键,按Enter选定值
Aug 02 Javascript
jquery选择器(常用选择器说明)
Sep 28 Javascript
JS检测输入字符是否包含非法字符的示例代码
Feb 11 Javascript
JavaScript 实现鼠标拖动元素实例代码
Feb 24 Javascript
对JavaScript的全文搜索实现相关度评分的功能的方法
Jun 24 Javascript
JS中常用的输出方式(五种)
Jun 12 Javascript
BootStrap学习系列之Bootstrap Typeahead 组件实现百度下拉效果(续)
Jul 07 Javascript
echarts实现地图定时切换散点与多图表级联联动详解
Aug 07 Javascript
利用Angular2的Observables实现交互控制的方法
Dec 27 Javascript
JS中的算法与数据结构之栈(Stack)实例详解
Aug 20 Javascript
VUE 实现动态给对象增加属性,并触发视图更新操作示例
Nov 29 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
《星际争霸II》全新指挥官斯台特曼现已上线
2020/03/08 星际争霸
Discuz Uchome ajaxpost小技巧
2011/01/04 PHP
通过table标签,PHP输出EXCEL的实现方法
2013/07/24 PHP
ThinkPHP让分页保持搜索状态的方法
2014/07/02 PHP
PHP stream_context_create()函数的使用示例
2015/05/12 PHP
PHP简单获取及判断提交来源的方法
2016/04/22 PHP
基于thinkPHP3.2实现微信接入及查询token值的方法
2017/04/18 PHP
php魔法函数与魔法常量使用介绍
2017/07/23 PHP
php使用redis的几种常见操作方式和用法示例
2020/02/20 PHP
var与Javascript变量隐式声明
2009/09/17 Javascript
jquery ajax提交整个表单元素的快捷办法
2013/03/27 Javascript
让复选框只能选择一项的方法
2013/10/08 Javascript
js实现可拖动DIV的方法
2013/12/17 Javascript
jQuery中insertBefore()方法用法实例
2015/01/08 Javascript
javascript字符串循环匹配实例分析
2015/07/17 Javascript
javascript电商网站抢购倒计时效果实现
2015/11/19 Javascript
浅析jQuery移动开发中内联按钮和分组按钮的编写
2015/12/04 Javascript
js实现图片无缝滚动
2015/12/23 Javascript
浅析Vue 生命周期
2018/06/21 Javascript
js监听html页面的上下滚动事件方法
2018/09/11 Javascript
vue实现简单图片上传
2020/06/30 Javascript
jQuery实现开关灯效果
2020/08/02 jQuery
jQuery实现动态向上滚动
2020/12/21 jQuery
Python实现基本数据结构中队列的操作方法示例
2017/12/04 Python
Python实现蒙特卡洛算法小实验过程详解
2019/07/12 Python
Python selenium环境搭建实现过程解析
2020/09/08 Python
python模拟点击在ios中实现的实例讲解
2020/11/26 Python
如何用SQL语句进行模糊查找
2015/09/25 面试题
房产买卖委托公证书
2014/04/04 职场文书
预防艾滋病宣传标语
2014/06/25 职场文书
就业意向书
2014/07/29 职场文书
房屋授权无偿使用证明
2014/11/29 职场文书
2014年党小组工作总结
2014/12/20 职场文书
文艺演出主持词
2015/07/01 职场文书
python使用glob检索文件的操作
2021/05/20 Python
spring项目中切面及AOP的使用方法
2021/06/26 Java/Android