Javascript 循环的HTTP请求

Javascript 循环的HTTP请求,javascript,for-loop,httprequest,Javascript,For Loop,Httprequest,我在循环中发出http请求时遇到问题 我可以得到我需要的值,但它们的顺序并不总是相同的 这是我的密码: async function test(){ for (let k = 0; k < ids.length; k++) { var ids1 = ids[k] GetMyResourceData(ids1) console.log(ids1) } } function GetMyResourceData(current){ var requ

我在循环中发出http请求时遇到问题

我可以得到我需要的值,但它们的顺序并不总是相同的

这是我的密码:

async function test(){
 for (let k = 0; k < ids.length; k++) {

   var ids1 = ids[k]
   GetMyResourceData(ids1)
  
    console.log(ids1)
}
}
 function  GetMyResourceData(current){
  
    var requestOptions = {
                method: 'GET',
                redirect: 'follow'
                };
  fetch( "url" + current , requestOptions)
                .then(response => response.text())
                .then(result => {
                    var res = JSON.parse(result)
        console.log(res[0].regular_price)
          
                })
                .catch(error => console.log('error', error));
   
}
test()
async函数测试(){
for(设k=0;kresponse.text())
。然后(结果=>{
var res=JSON.parse(结果)
console.log(res[0]。常规价格)
})
.catch(error=>console.log('error',error));
}
测试()
5项的输出如下所示:

5.25, 19.55 , 13.55 , 8.25 , 22.82

有时是这样的:

5.25, 13.55 , 19.55 , 22.82 , 8.25

我已经尝试了一切,这是我的最后一次尝试:D

有人知道我能做些什么来获得循环中的数据吗

那是救命的办法;)

谢谢

请求是异步的,这意味着由于完成时间的变化,它们不会遵守您的执行顺序

不要记录每个请求,而是确保
GetMyResourceData
返回
fetch
请求并将其推送到请求数组中,以便所有请求都位于单个数组中

然后使用等待所有请求完成。现在,您将拥有一个响应数组,响应的顺序与调用请求的顺序相同

还要注意,来自请求的
响应
可以使用该方法解析JSON

功能测试(){
让请求=[];
for(设k=0;kresponse.json())
.catch(error=>console.log('error',error));
}
test()。然后(响应=>{
响应。forEach(res=>{
console.log(res[0]。常规价格)
});
});

const requests=ids.map(GetMyResourceData)
在循环中的
GetMyResourceData
中使用
away
关键字
function test() {
  let requests = [];
  for (let k = 0; k < ids.length; k++) {
    let ids1 = ids[k]
    requests.push(GetMyResourceData(ids1))
  }
  return Promise.all(requests);
}


function GetMyResourceData(current) {
  let requestOptions = {
    method: 'GET',
    redirect: 'follow'
  };
  
  return fetch("url" + current, requestOptions)
    .then(response => response.json())
    .catch(error => console.log('error', error));
}

test().then(responses => {
  responses.forEach(res => {
    console.log(res[0].regular_price)
  });
});