首页 > 其他分享 >reduce实现异步串行重复请求同一个接口

reduce实现异步串行重复请求同一个接口

时间:2023-09-02 17:34:04浏览次数:39  
标签:异步 code name para reduce 接口 串行 请求

在项目中会遇到循环请求接口的情况,不管使用 for、forEach、map 进行循环都会出现并行请求接口出现高并发,使用reduce实现异步串行重复请求同接口,等待上一次请求结束后在进入下一次请求。

需要循环的对象数组:

let loopList = [
    {
       code:1,
       name:"名称1",
       para:"1" 
    },{
       code:2,
       name:"名称2",
       para:"2" 
    },{
       code:3,
       name:"名称3",
       para:"3" 
    },{
       code:4,
       name:"名称4",
       para:"4" 
    },{
       code:5,
       name:"名称5",
       para:"5" 
    },{
       code:6,
       name:"名称6",
       para:"6" 
    }
]

 使用reduce进行循环

loopList.reduce(async(pre, next, i) => {
    await pre
    return await getInfo(next.para).then(res =>{
     // 接口请求成功后执行方法
    })
}, Promise.resolve()).then(res=>{
   // 循环成功后执行方法
})

 

标签:异步,code,name,para,reduce,接口,串行,请求
From: https://www.cnblogs.com/Intellectualscholar/p/17662146.html

相关文章

  • 分片+异步 优化in子查询
    将一次性查询改为通过分片、异步优化in子查询集合数据分片是将数据按指定大小进行分组,像java中使用guava或hutool工具的partition进行分组,然后分批处理或者获取数据,in子查询会通过创建临时表,不易将大量数据放入in子查询中案例:分片+异步操作@Testvoidtest32(){Execu......
  • C# 异步执行操作
    为了方便测试异步,先加个计时计时相关(可以直接跳过该部分)//开始计时Stopwatchstopwatch=newStopwatch();stopwatch.Start();//停止计时stopwatch.Stop();//输出计时毫秒数stopwatch.ElapsedMilliseconds阻塞延迟,下面两个分别表示阻塞三秒钟同步阻塞:Thr......
  • MapReduce 中的两表 join 几种方案简介
    1.概述在传统数据库(如:MYSQL)中,JOIN操作是非常常见且非常耗时的。而在HADOOP中进行JOIN操作,同样常见且耗时,由于Hadoop的独特设计思想,当进行JOIN操作时,有一些特殊的技巧。本文首先介绍了Hadoop上通常的JOIN实现方法,然后给出了几种针对不同输入数据集的优化方法。2.常见的join方法介......
  • 5分钟带你回顾大文件分片以及异步计算hash的步骤
    背景  文件上传功能在中后台项目中是最常见的功能,分片上传是一种将大文件分割成多个小片段进行上传的技术,可以有效提高文件上传的速度和稳定性。思路  1.首先就是使用File.slice对文件进行分割产出一个数组用于存储每个小的chunk片段  2.异步计算hash值,可用作标识文......
  • C# 将异步改成同步方法
    再此做个记录。最近项目满篇都是async异步方式写代码,但是有些场景并没有执行的异步方法,就是说不需要执行awaitasync。如果要改成同步的方法,需要去掉async,再写个重构同步方法(这个就很积累)如果想不改变async方式,还能有效的执行同步方法。可以加入下面的代码:awaitTask.CompletedTa......
  • 初识MQ-异步通讯的优缺点
          ......
  • qt使用QMetaObject::invokeMethod异步调用或QTimer::singleShot解决很久才能显示界面
    https://blog.csdn.net/weixin_43935474/article/details/124922897//Load();//QMetaObject::invokeMethod(this,"Load",Qt::QueuedConnection);//无参数,QueuedConnection表示异步调用,等主线程QMetaObject::invokeMethod(this,"Load",Qt::QueuedConnectio......
  • 双缓冲异步日志(Async Logging)
    文章目录一、日志系统简介二、功能需求三、性能需求四、高效的异步日志1、异步日志的概念2、双缓冲异步日志解析3、AsyncLogging源码4、代码运行图示五、双缓冲异步日志的相关问题一、日志系统简介日志通常用于故障诊断和追踪(trace),也可用于性能分析。日志通常是分布式系统中事......
  • Swift - 高阶函数介绍(map、flatMap、filter、reduce)
     Swift-高阶函数介绍(map、flatMap、filter、reduce)https://blog.csdn.net/Alexander_Wei/article/details/78543410?spm=1001.2101.3001.6650.3&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-3-78543410-blog-127072873.235%5Ev38%5Epc_r......
  • 用js reduce 写一个reduce循环遍历数组对象,里面带有if判断
    简单的reduce案例,实际场景中使用不多,这里给到一个常用的遍历数组对象!!varproducts=[{name:"Apple",price:2.5,quantity:3},{name:"Banana",price:1.5,quantity:2},{name:"Orange",price:3,quantity:4},];vartotalPrice=products......