首页 > 编程语言 >[Javascript] Paralle Task

[Javascript] Paralle Task

时间:2024-09-03 21:16:29浏览次数:10  
标签:addTask Task Javascript finish second resolve Paralle after

function timeout(time) {
  return new Promise((resolve) => {
    setTimeout(resolve, time);
  });
}

class ParalleTask {
  constructor(paralleCount = 2) {
    this.tasks = [];
    this.paralleCount = paralleCount;
    this.runningCount = 0;
  }

  add(task) {
    return new Promise((resolve, reject) => {
      this.tasks.push({ task, resolve, reject });
      this._run();
    });
  }

  _run() {
    while (this.runningCount < this.paralleCount && this.tasks.length) {
      this.runningCount++;
      const { task, resolve, reject } = this.tasks.shift();
      task()
        .then(resolve)
        .catch(reject)
        .finally(() => {
          this.runningCount--;
          this._run();
        });
    }
  }
}

const superTask = new ParalleTask();

function addTask(time, name) {
  superTask
    .add(() => timeout(time))
    .then(() => {
      console.log(`${name} is done`);
    });
}

addTask(10000, "Task 1");
addTask(5000, "Task 2");
addTask(3000, "Task 3");
addTask(4000, "Task 4");
addTask(5000, "Task 5");

// after 5 second, finish Task 2
// then after 3 second, finish Task 3
// then after 2 second, finish Task 1
// then after 2 second, finish Task 4
// then after 3 second, finish Task 5
// Total 15 seconds

 

标签:addTask,Task,Javascript,finish,second,resolve,Paralle,after
From: https://www.cnblogs.com/Answer1215/p/18395463

相关文章

  • Datawhale X 李宏毅苹果书 AI夏令营 Task3-机器学习实践方法论
    在上一章介绍完机器学习模型后,我们接着讨论模型中可能存在的一些问题。首先我们需要明确一件事,就是Kaggle上的测试结果不好,可能有多个原因。第一,如果模型在运行训练模型时,所产生的损失就很大,那么有可能是模型偏差(modelbias)或优化(optimization)问题。第二,如果模型在运行训......
  • Datawhale X 李宏毅苹果书 AI夏令营-深度学习入门篇-Task3《深度学习详解》- 实践方法
     核心学习目标:通过《深度学习详解》和李宏毅老师21年的机器学习课程视频,入门机器学习,并尝试学习深度学习,展开代码实践(选修)。该书保留了李宏毅老师公开课中大量生动有趣的例子,帮助读者从生活化的角度理解深度学习的概念、建模过程和核心算法细节,包括卷积神经网络、Transform......
  • 网站创建代办事项列表JavaScript
    一、明确需求我希望创建一个web,包含一个表单,能够实现添加任务、完成任务、删除任务等功能,网站具有背景图,通过按钮来进行交互。二、创建文件我们需要一个HTML文件、一个CSS样式文件和一个JS文件。三、开始制作要创建一个待办事项列表网页,首先需要确定网页的主题和目的。......
  • javascript变量
    定义变量var声明变量的关键字vara;vara=10;varb=20.8;varc="demo";定义时不区分数据类型,但是使用时存在类型的区分变量类型:①基本类型:(零零散散不可拆分)数字类型1010.6字符串"aa"'aaa'布尔类型真/假true/falseundefined类型即声明变量但不进行赋......
  • JavaScript身份证真伪查验接口厂家有哪些?身份证查询真伪
    在当前数字化时代,身份证的真伪验证是一个十分重要的环节,尤其是在金融、电子政务、电子商务等行业的应用中,确保用户身份的真实性不仅有助于防范欺诈行为,还能提高服务的安全性和可靠性。翔云身份证实名认证api接口能够校验姓名与身份证号的一致性。权威数据源实时核验,保证......
  • JavaScript中的export、export default、exports和module.exports(export、export defa
    简介:在JavaScript中,export和exportdefault是ES6模块系统的核心部分,用于从文件中导出函数、关键字,对象或值,使其可以在其他文件中通过import语句导入和使用,而exports和module.exports是CommonJS模块系统的一部分,在Node.js环境中,你可以使用exports或module.exports......
  • 深度学习入门篇Task3#Datawhale X 李宏毅苹果书 AI夏令营
    第二章实践方法论2.1模型偏差模型过于简单导致未拟合重新设计模型增加特征2.2优化问题梯度下降优化的不够,没找到最优参数针在海里,大海捞针,但是方法不给力建议:先使用简单的线性模型或者是SVR测试一下,一般这些模型不会优化不到位训练数据损失突然不再降低或者......
  • javascript基础从小白到高手系列一千九百二十三:替代性跨源技术
    CORS出现之前,实现跨源Ajax通信是有点麻烦的。开发者需要依赖能够执行跨源请求的DOM特性,在不使用XHR对象情况下发送某种类型的请求。虽然CORS目前已经得到广泛支持,但这些技术仍然没有过时,因为它们不需要修改服务器。图片探测图片探测是利用标签实现跨域通信的最早的......
  • javascript基础从小白到高手系列一千九百二十四:Fetch API
    FetchAPI能够执行XMLHttpRequest对象的所有任务,但更容易使用,接口也更现代化,能够在Web工作线程等现代Web工具中使用。XMLHttpRequest可以选择异步,而FetchAPI则必须是异步。FetchAPI是WHATWG的一个“活标准”(livingstandard),用规范原文说,就是“Fetch标准定义请......
  • 浙江省会计人员继续教育刷课脚本-JavaScript编写
    脚本学习网站:浙江省会计人员继续教育:https://jxjy.czt.zj.gov.cn/front/jxjy.html脚本地址:浙江省会计人员继续教育-刷课脚本:https://greasyfork.org/zh-CN/scripts/506412-浙江省会计人员继续教育-刷课脚本教程1.插件安装(以MicrosoftEdge浏览器为例)打开最中间那个蓝色......