当前位置: 首页 > news >正文

石家庄小学网站建设软文素材库

石家庄小学网站建设,软文素材库,拍卖网站咋做,wampserver做动态网站思路: 主要通过异步等待队列执行的原理。 当前执行的任务数达到最大值的时候,再继续执行的任务会放入等待队列里,直到当前任务执行结束后,减少一个当前任务数,并且判断队列中是否有任务,如果有则按顺序执…

 思路:

主要通过异步等待队列执行的原理。

当前执行的任务数达到最大值的时候,再继续执行的任务会放入等待队列里,直到当前任务执行结束后,减少一个当前任务数,并且判断队列中是否有任务,如果有则按顺序执行第一个。

class Scheduler {constructor(max) {this.max = max;this.count = 0; // 用来记录当前正在执行的异步函数this.queue = new Array(); // 表示等待队列}async add(promiseCreator, order) {/*此时count已经满了,不能执行本次add需要阻塞在这里,将resolve放入队列中等待唤醒,等到count<max时,从队列中取出执行resolve,执行,await执行完毕,本次add继续*/console.log("添加事件", order);if (this.count >= this.max) {console.log("放入队列中", order);await new Promise((resolve, reject) => this.queue.push(resolve));}this.count++;console.log("任务执行", order);let res = await promiseCreator();this.count--;if (this.queue.length) {console.log("队列启动");// 依次唤醒add// 若队列中有值,将其resolve弹出,并执行// 以便阻塞的任务,可以正常执行this.queue.shift()();}return res;}
}const timeout = time =>new Promise(resolve => {setTimeout(resolve, time);});const scheduler = new Scheduler(2);const addTask = (time, order) => {//add返回一个promise,参数也是一个promisescheduler.add(() => timeout(time), order).then(() => console.log(order));
};addTask(1000, '1');
addTask(500, '2');
addTask(300, '3');
addTask(400, '4');// output: 2 3 1 4
http://www.hkea.cn/news/98685/

相关文章:

  • 档案网站建设的步骤八大营销方式有哪几种
  • 手机网站免费制作平台semseo
  • 周口市做网站小红书seo排名
  • 网站开始怎么做的ps培训
  • 去哪个网站找题目给孩子做保定百度首页优化
  • 五道口网站建设惠州seo外包服务
  • 如何查看网站是否备案企业宣传册
  • 好的网站建设公司排名互联网宣传推广
  • 上海买二手房做哪个网站好seo快速排名优化
  • 十大中国网站制作免费广告
  • wordpress 文章主题关键词推广seo
  • 佛山网站建设佛山网络推广代运营公司靠谱吗
  • 贵阳疫情最新消息站内seo优化
  • wordpress相关问题深圳百度关键字优化
  • 做国珍新时代 网站陕西seo顾问服务
  • 建立网站怎么做关键字搜索引擎营销的作用
  • 广州手机网站建设宁波seo优化费用
  • 怎么设置网站服务器宁德市教育局官网
  • 查看网站源代码建站可以牛排seo系统
  • 政府网站建设的基本原则百度网盘电脑版
  • 张家港网站建设福州百度快速优化
  • 兼职做网站编辑百度搜索推广开户
  • 谁告诉你j2ee是做网站的宁波网站推广找哪家公司
  • 谷歌外贸建站多少钱搭建网站教程
  • 赚钱靠普的网站关键字搜索软件
  • 建设银行深分行圳招聘网站做游戏推广一个月能拿多少钱
  • 北京网站建设及推广招聘关键词排名代做
  • 对网站建设的意见建议网络营销推广的方法有哪些
  • 爬虫网站怎么做怎样才能在百度上面做广告宣传
  • 网站页码南昌做seo的公司有哪些