js async 分批次请求

2024-04-03 10:28
文章标签 请求 js async 批次

本文主要是介绍js async 分批次请求,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

问题描述:如果merchantNos的数量大于1000需要分批进行请求,如为5000条,则分五次请求,然后把请求的数据拼在一起,如何做到

const merchantNos = ["123","123","123","123","123","123"
]
export const queryOrgInfos = async (params) => {return new Promise((resolve) => {// 模拟异步请求延迟setTimeout(() => {const mockResponse = {code: 0,data: [{"poiName": "123餐厅","merchantNo": "1234","address": "钟楼","brandName": "123品牌",}],};resolve(mockResponse);}, 1000); // 延迟1秒以模拟异步请求});
};
const merchantDetails = await queryOrgInfos(merchantNos);
console.log(merchantDetails, 'merchantDetails')
const queryOrgInfos = async (params) => {return new Promise((resolve) => {// 模拟异步请求延迟setTimeout(() => {const mockResponse = {code: 0,data: [{"poiName": "123","merchantNo": "123","address": "钟楼","brandName": "123",}],};resolve(mockResponse);}, 1000); // 延迟1秒以模拟异步请求});
};
// 定义一个函数,用于分批处理请求,并合并结果
const batchQueryOrgInfos = async (merchantNos, batchSize) => {// 计算需要分多少批const batchCount = Math.ceil(merchantNos.length / batchSize);let allData = [];for (let i = 0; i < batchCount; i++) {// 计算每一批的开始和结束索引const start = i * batchSize;const end = Math.min(start + batchSize, merchantNos.length);// 获取当前批次的merchantNosconst currentBatch = merchantNos.slice(start, end);console.log(currentBatch, 'currentBatch')// 发起请求并获取结果const response = await queryOrgInfos(currentBatch);// 检查响应码是否为0(成功)if (response.code === 0) {// 将当前批次的数据添加到总数据中allData = allData.concat(response.data);} else {// 可以根据实际需求处理错误情况console.error('Error fetching data for batch:', i, 'Response:', response);}}return {code: 0,data: allData};
};// 假设我们有5000个merchantNos
const merchantNos = ["51550082","51550083","51550084","51550085","51550086"
]; // 5000个merchantNo的数组// 定义每批请求的大小
const batchSize = 3;// 使用分批处理函数获取所有的商户详情
const merchantDetails = await batchQueryOrgInfos(merchantNos, batchSize);
console.log(merchantDetails, 'merchantDetails');

这篇关于js async 分批次请求的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/872664

相关文章

js+css二级导航

效果 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Con

axios全局封装AbortController取消重复请求

为什么? 问题:为什么axios要配置AbortController?防抖节流不行吗? 分析: 防抖节流本质上是用延时器来操作请求的。防抖是判断延时器是否存在,如果存在,清除延时器,重新开启一个延时器,只执行最后一次请求。节流呢,是判断延时器是否存在,如果存在,直接return掉,直到执行完这个延时器。事实上,这些体验感都不算友好,因为对于用户来说,得等一些时间,尤其是首次请求,不是那么流畅

js小题:通过字符串执行同名变量怎么做

在JavaScript中,你不能直接使用一个字符串来直接引用一个变量,因为JavaScript是一种静态类型语言(尽管它的类型在运行时可以变化),变量的名字在编译时就被确定了。但是,有几种方法可以实现类似的功能: 使用对象(或Map)来存储变量: 你可以使用一个对象来存储你的变量,然后使用字符串作为键来访问这些变量。 let myVars = { 'var1': 'Hello', 'var

图形编辑器基于Paper.js教程03:认识Paper.js中的所有类

先来认一下Paper的资源对象,小弟有哪些,有个整体的认识。认个脸。 在Paper.js的 官方文档中类大致有如下这些: 基类: ProjectViewItemPointToolSizeSegmentRectangleCurveCurveLocationMatrixColorStyleTweenToolEventGradientGradientStopEvent 二级或三级类 继承Ite

HTML文档插入JS代码的几种方法

在HTML文档里嵌入客户端JavaScript代码有4中方法: 1.内联,放置在< script>和标签对之间。 2.放置在由< script>标签的src属性指定的外部文件中。 3.放置在HTML事件处理程序中,该事件处理程序由onclick或onmouseover这样的HTML属性值指定。 4.放在一个URL里,这个URL使用特殊的“javascript:”协议。 在JS编程中,主张

js 正则表达式出现问题

帮同事写个页面,出现正则表达式不管怎么改都没法匹配的情况。。。。 reg = /^sy[0-9]+$/i; if(rtx.match(reg) == null){ alert("请输入正确的RTX账号!"); return false; } 因为之前一直用的是 reg ="/^sy[0-9]+$/i"; 写PHP写习惯了。。外面多写了两个双引号……T.T 改

bootstrap和JS相关

下表列出了模态框中要用到事件。这些事件可在函数中当钩子使用。 bootstrap 显示隐藏div $('.show-info').click(function () {var show = $(this).data('show');if(show =='all'){$('#creative').show();$('#plan').show();$('#plan').attr('class','

sublime配置node.js

1、下载Nodejs插件,下载地址为: https://github.com/tanepiper/SublimeText-Nodejs(见本人网盘) 下载zip压缩包后解压,文件名改为Nodejs 2、打开Sublime Text3,点击菜单“Perferences” =>“Browse Packages”打开“Packages”文件夹,并将第1部的Nodejs文件夹剪切进来 3

jmeter测试https请求

公司最近在搞全站HTTPS改造,进一步提高网站的安全性,防止运营商劫持。那么,改造完成后,所有前后端的URL将全部为https。 So ,研究下怎么用Jmeter访问https请求呢。 其实很简单, 第一步在jmeter中创建HTTP请求,如下图进行配置,https端口为443; 第二步,在本机浏览器,如Chrome中导入该域名证书,在更多工具-设置-管理证书的地方,找到该证书,导出到本地。然后在

Rust:Future、async 异步代码机制示例与分析

0. 异步、并发、并行、进程、协程概念梳理 Rust 的异步机制不是多线程或多进程,而是基于协程(或称为轻量级线程、微线程)的模型,这些协程可以在单个线程内并发执行。这种模型允许在单个线程中通过非阻塞的方式处理多个任务,从而实现高效的并发。 关于“并发”和“并行”的区别,这是两个经常被提及但含义不同的概念: 并发(Concurrency):指的是同时处理多个任务的能力,这些任务可能在同一时