首页 > 其他分享 >JS 控制并行度

JS 控制并行度

时间:2024-06-17 21:15:05浏览次数:15  
标签:控制 const err url chunk results JS 数组 并行度

const urls = ["url1", "url2", ... ,"url100"]; 
const maxConcurrentNum = 10; // 最大并发数 
// 数组分块,chunk表示每批次数量,返回数组二维数组 
function chunk(arr, chunk) { 
  let result = []; 
  for (let i = 0, len = arr.length; i < len; i += chunk) { 
    result.push(arr.slice(i, i + chunk)); 
   } 
   return result; 
 }

// 异步请求方法 
function fetchUrl(url) { 
  return new Promise((resolve, reject) => { 
    fetch(url) 
      .then(res => resolve(res)) 
      .catch(err => reject(err)); 
     }); 
   }

// 对url数组进行分块处理
const chunkedUrls = chunk(urls, maxConcurrentNum);

(async function () {
  try {
    for (let urls of chunkedUrls) {
      const promises = urls.map(url => fetchUrl(url));
      // 等待所有promises完成执行,并将结果存入results数组中
      const results = await Promise.all(promises);
      console.log('results:', results);
    }
  } catch (err) {
   console.error(err);
  }
})();

以上代码通过将数组分成多个数目相等的小数组,每次最多只开启maxConcurrentNum个并发请求,以此来控制并发数量。每当一组请求完成后再发送新的一批请求,可以实现对异步任务的并发控制。

标签:控制,const,err,url,chunk,results,JS,数组,并行度
From: https://www.cnblogs.com/wkk2020/p/18253188

相关文章

  • 基于html,css,js,jQuery,ajax实时天气的网页
    <!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metaname="viewport"content="width=device-width,initial-scale=1.0"><linkrel="stylesheet"hr......
  • 前端JS必用工具【js-tool-big-box】学习,打开全屏和关闭全屏
    这一小节,我们说一下js-tool-big-box工具库中,打开全屏和关闭全屏的方法学习。我们知道,浏览器想打开全屏,按一下F11键就可以了,但一来这个功能不一定所有使用的用户都知道,二来在一些例如大屏的需求场景下,还是很被需要的。很多用户一旦投屏展示后,他那个大屏幕就在那里给用户展......
  • 操作系统第二章进程的描述与控制
    1.什么是前趋图,为什么要引入前趋图是一个有向无循环图,用于描述进程之间执行的先后顺序。为了更好的描述程序的顺序和并发执行情况 2.为什么程序并发执行会产生间断性特征程序在并发执行时,由于他们共享系统资源,以及为完成同一项任务而相互合作,致使这些并发执行的程序之间形成......
  • oracle并发与多版本控制
    1相关概念1.1并发控制数据库对多个用户同时查询或者操作数据的管理。1.2多版本控制oracle能物化多个版本的数据,使在一个时间点读一个表,保证在这个时间点读到的表数据是一致的。oracle的多版本控制机制是oracle提供读一致性的基础。1.3事务的作用事务使数据库从一种一致......
  • linux远程访问及控制
    补充:终端:接收用户的指令TTY终端虚拟终端ssh:22端口号,加密。telnet:23端口号,不加密。解释器:shellSSH远程管理SSH(SecureShell)是一种安全通道协议,主要用来实现字符界面的远程登录、远程复制等功能。SSH协议对通信双方的数据传输进行了加密处理,其中包括用户登录时输入的......
  • shell循环控制
    shell双层循环双层循环和循环语句的使用,while和until的语法使用echo打印echo-n表示不换行输出echo-e输出转义字符\b:相当于退格键(backspace)\n:换行,相当于回车键\f:换行,换行后的新行开头连着上一行的行尾\t:相当于tab键横向制表符echo-ne即不换行输出制表符#9......
  • SSH配置、跨主机上传下载、Wrapper访问控制实验操作步骤
    目录终端OpenSSH服务器SSH(SecureShell)协议OpenSSH服务监听选项SSH配置修改端口号用户登录控制指定用户登录1.2.严格模式最大会话数量公钥验证使用公钥认证让客户端登录系统域名解析跨主机下载、上传文件下载指定端口下载上传指定端口上传 ​编辑sftp功......
  • 远程访问及控制
    目录终端OpenSSH服务器SSH(SecureShell)协议OpenSSH服务监听选项SSH配置修改端口号用户登录控制指定用户登录1.2.严格模式最大会话数量公钥验证使用公钥认证让客户端登录系统域名解析跨主机下载、上传文件下载指定端口下载上传指定端口上传sftp功能下载......
  • Java JSON组成和解析
    本框架JSON元素组成和分析,JsonElement分三大类型JsonArray,JsonObject,JsonString。JsonArray:数组和Collection子类,指定数组的话,使用ArrayList来add元素,遍历ArrayList再使用Array.newInstance生成数组并添加元素即可.JsonObject:带有泛型的封装类,给带有泛型的字段赋......
  • 什么是浅拷贝和深拷贝,如何用 js 代码实现?
    〇、简介和对比简介浅拷贝:只复制原始对象的第一层属性值。  如果属性值是值类型,将直接复制值,本值和副本变更互不影响;  如果是引用数据类型,则复制内存地址,因此原始对象和新对象的属性指向相同的内存地址,改变任一值,另一变量值也会同步变更。深拷贝:递归地复制原始对象的所......