Javascript 循环的HTTP请求
我在循环中发出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
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)
});
});