(function(win, undefined){var asycs = win.as = function(ischain){var me = this;me.ischain = ischain || false;if(!(this instanceof as)){return new asycs(ischain);}}asycs.prototype.add = function(){//主入口var arg = Array.prototype.slice.call(arguments),me = this;me.array = arg;me.i = 0;me.reFunc();}asycs.prototype._listener = function(order){var me = this;if(--me.length=== 0){me.callback();}}asycs.prototype.customShift = function(callback){var me = this;return function(order){return callback(function(){return me.giveMessage(order);})}}asycs.prototype.reFunc = function(){var me = this,i = 0 ;var len  = me.array.length;me.length = len - 1;me.callback = me.array[len-1];while(i < len - 1){var func = me.array[i];me.array[i] = me.customShift(func);if(!me.ischain){me.array[i](i);}i++;}if(me.ischain){me.array[0](0);}return len;}asycs.prototype.giveMessage = function(order){var me = this;me._listener(order);if(me.ischain){if(++order < me.array.length - 1){me.array[order](order);}}return {rec : me.i++,total : "ok"}}})(window, undefined)

根据ischain true a执行完执行b b执行完执行c 全部执行完 执行最后一个函数

false a b c 异步没顺序 但是最后一个函数要等他们执行完再去执行

每执行完一个函数会通知asycs对象 对象接收到后判断是否数组中的最后一个 来执行 回调

转载于:https://www.cnblogs.com/shxydx/articles/3030420.html

javascript 异步队列相关推荐

  1. [js高手之路]javascript腾讯面试题学习封装一个简易的异步队列

    这道js的面试题,是这样的,页面上有一个按钮,一个ul,点击按钮的时候,每隔1秒钟向ul的后面追加一个li, 一共追加10个,li的内容从0开始技术( 0, 1, 2, ....9 ),首先我们用闭包 ...

  2. JQuery日记6.5 Javascript异步模式(一)

    理解力JQuery前实现异步队列,有必要理解javascript异步模式. Javascript异步其实并不严重格异步感,js使某些片段异步方式在将来运行,流不必等待继续向下进行. 在多线程的语言中最 ...

  3. JavaScript异步精讲,让你更加明白Js的执行流程!

    JavaScript异步精讲,让你更加明白Js的执行流程! 问题点 什么是单线程,和异步有什么关系 什么是 event-loop jQuery的Deferred Promise 的基本使用和原理 as ...

  4. 前端知识点回顾之重点篇——JavaScript异步机制

    JavaScript异步机制 来源:https://www.cnblogs.com/zhaodongyu/p/3922961.html JavaScript是单线程异步执行的,单线程意味着代码在任务队 ...

  5. 写给初学者的JavaScript异步编程和背后思想

    导读: 对于接触JavaScript这门编程语言没有多久的本菜鸡而言,在相当长的一段时间内,我都完全无法理解这门语言中的异步编程,不明白什么叫异步编程以及为什么需要异步编程.为什么顺序执行程序就不行了 ...

  6. javascript --- 异步工作流的动态排队技术

    很多情况下,使用async.series和async.paralle存在一个明显的问题,即: 1.其任务队列是静态的,在其调用前,一定要明确任务队列的数量,一旦明确了任务队列的数量,就不能改变. 2. ...

  7. php异步轮询如何实现,深入剖析JavaScript异步之事件轮询

    本篇文章给大家带来的内容是关于深入剖析JavsScript异步之事件轮询,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. JavsScript 是一门单线程的编程语言,这就意味着一个时 ...

  8. 网页javascript加载不出_写给初学者的JavaScript异步编程和背后思想

    导读:对于接触JavaScript这门编程语言没有多久的本菜鸡而言,在相当长的一段时间内,我都完全无法理解这门语言中的异步编程,不明白什么叫异步编程以及为什么需要异步编程.为什么顺序执行程序就不行了呢 ...

  9. JavaScript异步编程【上】 -- 同步和异步、事件循环(EventLoop)、微任务和宏任务、回调函数

    文章内容输出来源:拉勾教育 大前端高薪训练营 前言 在我们学习JavaScript中,我们知道,JavaScript的执行环境是单线程的.所谓单线程是指一次只能完成一个任务,如果有多个任务,就必须排队 ...

  10. JavaScript异步编程原理

    众所周知,JavaScript 的执行环境是单线程的,所谓的单线程就是一次只能完成一个任务,其任务的调度方式就是排队,这就和火车站洗手间门口的等待一样,前面的那个人没有搞定,你就只能站在后面排队等着. ...

最新文章

  1. 医 系统 springboot搜索到的spring boot 的javaweb项目
  2. string之substring的用法
  3. 完美解决“惠普p1007打印机老显示脱机使用”的问题
  4. mysql语句使用_MySQL语句的使用
  5. 剑指offer-week1
  6. 直播预约 | 揭秘微信支付背后的数据库技术
  7. python学习-综合练习四(最大公约数、最小公倍数、生成日历、递归调用、字符串)
  8. matlab给0数组赋值,MATLAB中怎么把一个函数的一部分赋值给一个变量或数组,比如怎么把sin(x)大于0的部分赋值给f....
  9. int指令02 - 零基础入门学习汇编语言65
  10. WriteFile API简介
  11. 删除某个字段_Android中Room的使用4_删除一个字段
  12. spring MVC中获取request和response
  13. Spark机器学习之协同过滤算法
  14. linux查看是否有某个运行的进程命令
  15. 宝峰c1对讲机写频软件_宝峰对讲机写频软件(BF-480 编程软件)
  16. Mac Zoc设置
  17. 拆解USB无线网卡,电路方案非常经典(附高清美图)
  18. C++基础(1)- 声明(前向声明 Forward Declaration)与定义
  19. 《做自己人生的CEO》总结
  20. discuz 版块导航function_forumlist.php,Discuz! X2扩建左侧版块导航 社区层次一目了然...

热门文章

  1. 数组排序-冒泡排序和选择排序
  2. S19王者荣耀服务器维护,王者荣耀:S19新赛季更新,她没上线惨遭重做,英雄调整,界面优化...
  3. android使用的数据,在 Android 应用中使用数据 - Xamarin | Microsoft Docs
  4. 持续输出|我的 2019 年
  5. Process finished with exit code 1
  6. docker-compose部署nacos 集群超过2个容器的问题
  7. Quartz 触发器、过期触发策略 、排它日历、数据持久化
  8. LayaAir Geolocation 获取地理位置
  9. SQLServer之修改DEFAULT约束
  10. 我的Android进阶之旅------gt;Android嵌入图像InsetDrawable的使用方法