不同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实例教程(19) 使用HoTMetal(4)
Dec 23 Javascript
js 页面输出值
Nov 30 Javascript
jQuery 获取对象 基本选择与层级
May 31 Javascript
jquery trim() 功能源代码
Feb 14 Javascript
JavaScript高级程序设计 读书笔记之十一 内置对象Global
Mar 07 Javascript
jquery实现导航固定顶部的效果仿蘑菇街
Oct 22 Javascript
javascript实现tab切换的两个实例
Nov 05 Javascript
浅谈jquery设置和获得checkbox选中的问题
Aug 19 Javascript
Vue 2中ref属性的使用方法及注意事项
Jun 12 Javascript
jquery单击文字或图片内容放大并居中显示
Jun 23 jQuery
使用vue实现通过变量动态拼接url
Jul 22 Javascript
typescript编写微信小程序创建项目的方法
Jan 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
利用PHP动态生成VRML网页
2006/10/09 PHP
php图片缩放实现方法
2014/02/20 PHP
解决ThinkPHP关闭调试模式时报错的问题汇总
2015/04/22 PHP
PHP动态地创建属性和方法, 对象的复制, 对象的比较,加载指定的文件,自动加载类文件,命名空间
2016/05/06 PHP
PHP面向对象程序设计之对象生成方法详解
2016/12/02 PHP
PHP进程通信基础之信号量与共享内存通信
2017/02/19 PHP
PHP 返回数组后处理方法(开户成功后弹窗提示)
2017/07/03 PHP
如何取得中文输入的真实长度?
2006/06/24 Javascript
极酷的javascirpt,让你随意编辑任何网页
2007/02/25 Javascript
用JavaScript页面不刷新时全选择,全删除(GridView)
2009/04/14 Javascript
js form 验证函数 当前比较流行的错误提示
2009/06/23 Javascript
javascript 日期常用的方法
2009/11/11 Javascript
JQuery团队打造的javascript单元测试工具QUnit介绍
2010/02/26 Javascript
兼容IE和FF的js脚本代码小结(比较常用)
2010/12/06 Javascript
JS常见问题整理(持续更新)
2013/08/06 Javascript
基于node实现websocket协议
2016/04/25 Javascript
javaScript给元素添加多个class的简单实现
2016/07/20 Javascript
ZeroClipboard.js使用一个flash复制多个文本框
2017/06/19 Javascript
Vue2.0+Vux搭建一个完整的移动webApp项目的示例
2019/03/19 Javascript
详解vue v-model
2020/08/31 Javascript
[01:06] DOTA2英雄背景故事第三期之秩序法则光之守卫
2020/07/07 DOTA
python通过openpyxl生成Excel文件的方法
2015/05/12 Python
Python3实现的画图及加载图片动画效果示例
2018/01/19 Python
Python爬虫框架Scrapy实例代码
2018/03/04 Python
Python产生一个数值范围内的不重复的随机数的实现方法
2019/08/21 Python
自定义实现 PyQt5 下拉复选框 ComboCheckBox的完整代码
2020/03/30 Python
通过实例解析Python RPC实现原理及方法
2020/07/07 Python
Brother加拿大官网:打印机、贴标机、缝纫机
2019/10/09 全球购物
导购员的岗位职责
2014/02/08 职场文书
应届电子商务毕业自荐书范文
2014/02/11 职场文书
创文明城市标语
2014/06/16 职场文书
幼儿园开学报名通知
2015/07/16 职场文书
2016会计专业自荐信范文
2016/01/28 职场文书
安全生产协议书
2016/03/22 职场文书
面试被问select......for update会锁表还是锁行
2021/11/11 MySQL
详解Flutter自定义应用程序内键盘的实现方法
2022/06/14 Java/Android