js循环中调接口,返回值的顺序问题
如果在js的循环中调接口,因为接口请求的数据响应时间不一样,所以接口返回值有快有慢,但是用什么方法可以保证返回的数据接顺序返回呢???
下面是代码
response.data.valueList.map是数组值,循环调接口拿值。
response.data.valueList.map(m=>{
let query={page:1,limit:500,attributeId:m.attributeId}
goodsModule.attrList(query).then(response=>{
if(response.code===0){
console.log(response.data)
response.data.list.map(n=>{
if(n.attributeValueId===m.attributeValueId){
m.attributeValueName=n.value
}
})
this.specsListCopy.push({specsDefault:m.attributeId,attributeList:response.data.list,attributeValue:m.attributeValueId,attributeValueName:m.attributeValueName})
}else{
response.data.list=[]
this.specsListCopy.push({specsDefault:m.attributeId,attributeList:response.data.list,attributeValue:m.attributeValueId})
}
})
})
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
![扫码二维码加入Web技术交流群](/public/img/jiaqun_03.jpg)
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
不确定逻辑是否需要变动,还有就是如果有一个接口reject的话是不会走then的,不考虑接口的状态的话可以使用Promise.allSettled
要看你循环怎么写,如果是 Async function,比如
那么自然就是顺序的。或者就用
Promise.all()
也可以。如果同时异步发起请求的话,数据
顺序返回
是没有办法保证的,除非同步请求。但是,你可以做到数据
顺序处理
:Promise.all
,Promise.allSettled
这一类的工具CountDownLatch
的方式,等待所有请求都返回数据之后,再调用处理方法。