不同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 相关文章推荐
超越Jquery_01_isPlainObject分析与重构
Oct 20 Javascript
JavaScript判断变量是否为undefined的两种写法区别
Dec 04 Javascript
javascript消除window.close()的提示窗口
May 20 Javascript
jQuery EasyUI学习教程之datagrid点击列表头排序
Jul 09 Javascript
使用JavaScript判断用户输入的是否为正整数(两种方法)
Feb 05 Javascript
Bootstrap进度条实现代码解析
Mar 07 Javascript
解决vue 界面在苹果手机上滑动点击事件等卡顿问题
Nov 27 Javascript
vue实现Input输入框模糊查询方法
Jan 29 Javascript
微信小程序canvas开发水果老虎机的思路详解
Feb 07 Javascript
javascript设计模式 ? 简单工厂模式原理与应用实例分析
Apr 09 Javascript
Nuxt默认模板、默认布局和自定义错误页面的实现
May 11 Javascript
单线程JavaScript实现异步过程详解
May 19 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 设计模式之 工厂模式
2008/12/19 PHP
PHP的cURL库简介及使用示例
2015/02/06 PHP
php基础设计模式大全(注册树模式、工厂模式、单列模式)
2015/08/31 PHP
浅析Yii2 GridView 日期格式化并实现日期可搜索教程
2016/04/22 PHP
php写入文件不覆盖的实例讲解
2019/09/17 PHP
在laravel5.2中实现点击用户头像更改头像的方法
2019/10/14 PHP
js post方式传递提交的实现代码
2010/05/31 Javascript
JQuery的read函数与js的onload不同方式实现
2013/03/18 Javascript
用js实现trim()的解决办法
2013/04/16 Javascript
jquery实现邮箱自动补全功能示例分享
2014/02/17 Javascript
ExtJS4如何给同一个formpanel不同的url
2014/05/02 Javascript
JQuery中使用Ajax赋值给全局变量失败异常的解决方法
2014/08/18 Javascript
ECMA5数组的新增方法有哪些及forEach()模仿实现
2015/11/03 Javascript
JavaScript基础篇(6)之函数表达式闭包
2015/12/11 Javascript
JS实现带动画的回到顶部效果
2017/12/28 Javascript
vue单个组件实现无限层级多选菜单功能
2018/04/10 Javascript
官方推荐react-navigation的具体使用详解
2018/05/08 Javascript
React和Vue中监听变量变化的方法
2018/11/14 Javascript
微信小程序 简易计算器实现代码实例
2019/09/02 Javascript
Vue在H5 项目中使用融云进行实时个人单聊通讯
2020/12/14 Vue.js
[01:29:42]Liquid vs VP Supermajor决赛 BO 第一场 6.10
2018/07/05 DOTA
Python使用scrapy采集数据时为每个请求随机分配user-agent的方法
2015/04/08 Python
微信跳一跳自动运行python脚本
2018/01/08 Python
Python数据分析之双色球中蓝红球分析统计示例
2018/02/03 Python
浅谈numpy数组中冒号和负号的含义
2018/04/18 Python
python pands实现execl转csv 并修改csv指定列的方法
2018/12/12 Python
Web页面中八种创建多列等高(等高列布局)的实现技术
2012/12/24 HTML / CSS
英国豪华针织品牌John Smedley的在线销售商:The Outlet by John Smedley
2018/04/08 全球购物
匡威英国官网:Converse英国
2018/12/02 全球购物
BIFFI美国站:意大利BIFFI BOUTIQUES豪华多品牌时装零售公司
2020/02/11 全球购物
怎么可以提高数据库查询数据的速度
2014/06/28 面试题
大学生个人简历自我评价
2013/11/16 职场文书
Vue中插槽slot的使用方法与应用场景详析
2021/06/08 Vue.js
Python 数据可视化之Bokeh详解
2021/11/02 Python
Windows Server 2008 修改远程登录端口以及配置防火墙
2022/04/28 Servers
Zabbix对Kafka topic积压数据监控的解决方案
2022/07/07 Servers