我利用nodejs在,批量请求一个接口并处理返回的数据。先要从excel里读取1000个身份证,然后通过请求接口得到返回数据,全部请求完后,将返回的数据存入excel并导出。现在我想问怎么批量请求1000次,最快?请求用的是superagent插件。我的语句里面有很多promise的方法,对应的不同接口,要求是每个身份证都跑一遍接口,获得的数据根据身份证统一整理
10条回答 默认 最新
- 社区专家-Monster-XH 2023-02-10 16:00关注
const superagent = require('superagent'); const exceljs = require('exceljs'); function getData1(id) { return new Promise((resolve, reject) => { superagent .get(https://example.com/api/data1/${id}) .then(res => { resolve(res.body); }) .catch(err => { reject(err); }); }); } function getData2(id) { return new Promise((resolve, reject) => { superagent .get(https://example.com/api/data2/${id}) .then(res => { resolve(res.body); }) .catch(err => { reject(err); }); }); } function getData3(id) { return new Promise((resolve, reject) => { superagent .get(https://example.com/api/data3/${id}) .then(res => { resolve(res.body); }) .catch(err => { reject(err); }); }); } async function processBatch(ids, startIndex) { // 为每个身份证号码发送请求 const data = await Promise.all( ids .slice(startIndex, startIndex + 10) .map(async id => { const [data1, data2, data3] = await Promise.all([ getData1(id), getData2(id), getData3(id) ]); return { id, data1, data2, data3 }; }) ); // 将数据写入 Excel data.forEach(d => { sheet.addRow([d.id, d.data1, d.data2, d.data3]); }); } async function main() { const workbook = new exceljs.Workbook(); const sheet = workbook.addWorksheet('Sheet 1'); // 读取 Excel 文件中的身份证号码 const ids = // ... let startIndex = 0; while (startIndex < ids.length) { await processBatch(ids, startIndex); startIndex += 10; } await workbook.xlsx.writeFile('output.xlsx'); } main();
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 2无用
悬赏问题
- ¥20 机器学习能否像多层线性模型一样处理嵌套数据
- ¥20 西门子S7-Graph,S7-300,梯形图
- ¥50 用易语言http 访问不了网页
- ¥50 safari浏览器fetch提交数据后数据丢失问题
- ¥15 matlab不知道怎么改,求解答!!
- ¥15 永磁直线电机的电流环pi调不出来
- ¥15 用stata实现聚类的代码
- ¥15 请问paddlehub能支持移动端开发吗?在Android studio上该如何部署?
- ¥20 docker里部署springboot项目,访问不到扬声器
- ¥15 netty整合springboot之后自动重连失效