首页 > 其他分享 >JS之循环发送请求代码优化

JS之循环发送请求代码优化

时间:2022-10-30 11:36:45浏览次数:76  
标签:index arr const res JS 发送 代码优化 message data

需求:将数组中的值作为参数,循环调用新增接口实现批量导入功能。因为接口调用有时间间隔限制,避免误操作,所以需要设置接口请求的间隔时间。

原代码如下:

const recursive = (arr, index) => {
arr[index]().then((res) => {
if (index + 1 < arr.length) {
setTimeout(() => recursive(arr, index + 1), 1000);
} else {
query();
}
});
};

const finish = (res) => {
let arr = [];
for (let param of res) {
param.taskId = sessionStorage.taskId;
let p = () => {
return new Promise((resolve, reject) => {
MiitTaskOrderApi.add(param)
.then((response) => {
const data = response.data;
if (data.code === 200) {
resolve();
} else {
message.error(data.message);
}
})
.catch((error) => {
message.warning(error.message);
});
});
};
arr.push(p);
}
recursive(arr, 0);
};

优化后的代码如下:

const pause = (millis) => new Promise((resolve) => setTimeout(resolve, millis));

const finish = async (res) => {
for (let [index, param] of res.entries()) {
param.taskId = sessionStorage.taskId;
MiitTaskOrderApi.add(param)
.then((response) => {
const data = response.data;
if (data.code === 200) {
if (index == res.length - 1) {
query();
message.success("导入成功");
}
} else {
message.error(data.message);
}
})
.catch((error) => {
message.warning(error.message);
});
await pause(1000);
}
};

优化点如下:

1.通过定义和使用pause函数,配合async/await,实现请求间的间隔。

2.通过使用数组的entries()函数,获得数组循环的index值,判断是否为最后一次循环,从而执行查询操作。

 



标签:index,arr,const,res,JS,发送,代码优化,message,data
From: https://blog.51cto.com/u_15686949/5807472

相关文章

  • js数据处理4
    <template><ModuleBox2title="数据趋势图"bgType="2":cityShow="true"moduleType="sjqs":styleObj="styleObj"><divclass="echarts-box">......
  • js获取当前日期的前七天
    //获取当前日期的前7天getDays(){letoneDay=24*60*60*1000letendTime=newDate(Date.now()-oneDay)endTime=this.formatterDate(en......
  • js一键切换dark模式
    js一键切换dark模式//初始化$(function(){lettheme=$.cookie('theme');if(theme=="dark"){$("body").addClass('dark');$("#theme").addClass('......
  • 使用Three.js 心得系列一 如何创建三维网格三、使用Three.js 心得系列三 Three.js 如
    一、使用Three.js心得系列一如何创建三维网格二、使用Three.js心得系列二如何改变三维场景的GlTF模型的位置三、使用Three.js心得系列三Three.js如何加载GlTF文件 ......
  • 什么是Json,如何使用?
    JavaScriptObjectNotation:javascript的对象表示法。这是一种能传递对象的语法,可以是键值对,数组,以及其他对象。轻量级的数据传输方法。json格式:{key:{key:[{......
  • FastJson序列化和反序列化问题记录
    序列化与反序列化问题调用外部接口,http://100.111.55.67:9999/cmdb/v0.2.0/departments?page_size=1000,返回数据格式如下:{"code":0,"content":[{......
  • JS 删除数组中某个元素
    1、首先查找出元素在数组中的位置即索引(数组中本来就有indexOf()方法,方便学习给出代码):Array.prototype.indexOf=function(val){for(vari=0;i<this.len......
  • 使用vue、elementUI开发一个js SDK
    目录背景介绍实操步骤初始化项目1.初始化vue项目2.查阅vue-cli构建目标内容3.具体操作步骤1.在package.json文件中添加命令2.添加入口文件背景介绍本文主要介绍使......
  • js字符串转字节
    functionstringToByte(str){varlen,c;len=str.length;varbytes=[];for(vari=0;i<len;i++){c=str.charCodeAt(i);if(c>=0x010000&......
  • python 与C++ 利用socket实现json数据传输
    单机python与C++程序利用socket实现json数据传输目录单机python与C++程序利用socket实现json数据传输需求实现方法的选择具体实现流程图示涉及到的技术1socket......