JS循环发送请求时控制请求并发数实例

 更新时间:2023年12月19日 10:14:24   作者:Victory  
这篇文章主要介绍了JS循环发送请求时控制请求并发数实例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

准备数据,调用方法

let data = [{ name: 1 }, { name: 2 }, { name: 3 }, { name: 4 }];
  LimitFunc(data, service, 2);

属性注释

//data:请求所需参数,service:请求回调名称,LimitNum 并发数量

const LimitFunc = async (data, service, LimitNum) => {
  const arrList = []; // 所有的promise
  const running = []; // 正在执行的promise
  for (const item of data) {
    const p = Promise.resolve(service(item)); // Promise.resolve回调函数
    arrList.push(p);
    if (LimitNum <= data.length) {
      // then回调中,当这个promise状态变为fulfilled后,将其从正在执行的promise列表running中删除
      const e = p.then(() => running.splice(running.indexOf(e), 1));
      running.push(e);
      if (running.length >= LimitNum) {
        // running的数量等于限制数时,Promise.race等待某一个promise状态发生变更,
        // 变更后,执行then的回调,将当前promise从running中删除,从下一次for循环中生成新的promise进入running
        await Promise.race(running);
      }
    }
  }
  return Promise.all(arrList);
};

axios请求

function service(item) {
  return new Promise((resolve) => {
    // axios成功
    axios('url', item).then(() => {
      resolve();
    });
  });
}

以上就是JS循环发送请求时控制请求并发数实例的详细内容,更多关于JS循环发送请求控制并发数的资料请关注脚本之家其它相关文章!

相关文章

  • 深入理解js A*寻路算法原理与具体实现过程

    深入理解js A*寻路算法原理与具体实现过程

    这篇文章主要介绍了js A*寻路算法原理与具体实现过程,结合实例形式详细分析了A*寻路算法的具体概念、原理、实现方法与相关操作技巧,需要的朋友可以参考下
    2018-12-12
  • require简单实现单页应用程序(SPA)

    require简单实现单页应用程序(SPA)

    下面小编就为大家带来一篇require简单实现单页应用程序(SPA)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-07-07
  • 函数式JavaScript编程指南

    函数式JavaScript编程指南

    函数式JavaScript编程指南...
    2007-02-02
  • 浅析JavaScript中变量提升的原理与使用

    浅析JavaScript中变量提升的原理与使用

    前端的小伙伴大概都知道,js中的var变量存在变量提升,在es6以后随着let变量的出现,变量提升问题得以解决,那么变量提升的原理是什么,es6又是怎么解决变量提升问题的,下面我们来共同探寻答案
    2023-05-05
  • js正则表达式验证邮件地址

    js正则表达式验证邮件地址

    这篇文章主要介绍了js正则表达式验证邮件地址,利用javaScript语言实现一下电子邮件地址验证程序,使用的是JavaScript语言的正则表达式库,感兴趣的小伙伴们可以参考一下
    2015-11-11
  • Javascript中arguments用法实例分析

    Javascript中arguments用法实例分析

    这篇文章主要介绍了Javascript中arguments用法,实例分析了javascript利用arguments实现模拟重载功能,需要的朋友可以参考下
    2015-06-06
  • javascript表单验证和Window详解

    javascript表单验证和Window详解

    这篇文章主要详细介绍了javascript表单验证和Window,并附上了示例代码,非常使用,对于我们更好的了解表单验证和Window很有帮助,这里推荐给大家
    2014-12-12
  • 详解JS鼠标事件中clientX/screenX/offsetX/pageX属性的区别

    详解JS鼠标事件中clientX/screenX/offsetX/pageX属性的区别

    在熟悉业务中播放器功能的时候,发现时间轴上绑定了点击和拖动事件,频繁遇到了类似pageX之类的事件属性,所以本文就来和大家详细聊聊clientX/screenX/offsetX/pageX等属性的区别吧
    2024-03-03
  • JavaScript实现精美个性导航栏筋斗云效果

    JavaScript实现精美个性导航栏筋斗云效果

    这篇文章主要介绍了JavaScript实现精美个性导航栏筋斗云效果,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2017-10-10
  • Es6 Generator函数详细解析

    Es6 Generator函数详细解析

    Generator 函数是 ES6 提供的一种异步编程解决方案,语法行为与传统函数完全不同。这篇文章给大家介绍Es6 Generator函数的相关知识,感兴趣的朋友一起看看吧
    2018-02-02

最新评论