Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/395.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 获取循环,保持结果顺序_Javascript_Promise_Fetch Api - Fatal编程技术网

Javascript 获取循环,保持结果顺序

Javascript 获取循环,保持结果顺序,javascript,promise,fetch-api,Javascript,Promise,Fetch Api,在这种情况下,我需要循环遍历URL数组并获取结果,但我需要保留请求的顺序,即第一个请求应该首先“保存”(写入文件),依此类推。请求的结果是文本文件,其内容没有任何显示原始URL或顺序的数据 我在下面做了一个演示,它获取虚拟JSON数据 let promissions=[]; 让数据=[]; 设i=1; let headers=新的headers(); headers.append('Content-Type','application/json'); headers.append('Accep

在这种情况下,我需要循环遍历URL数组并获取结果,但我需要保留请求的顺序,即第一个请求应该首先“保存”(写入文件),依此类推。请求的结果是文本文件,其内容没有任何显示原始URL或顺序的数据

我在下面做了一个演示,它获取虚拟JSON数据

let promissions=[];
让数据=[];
设i=1;
let headers=新的headers();
headers.append('Content-Type','application/json');
headers.append('Accept','application/json');
常量fn=async()=>{
而(i<5){
承诺,推动(
取('https://reqres.in/api/users/"我,{
模式:“cors”,
标题:标题
})
.then(response=>response.json())
。然后(json=>{
data.push(json)
})
)
i++;
}
等待承诺。所有(承诺)。然后(()=>{
控制台日志(数据);
})
}

fn()使用承诺解析的值。无需保留单独的
数据
数组并手动向其中添加值<代码>承诺。所有
都确保值按照承诺的顺序排列

let promissions=[];
设i=1;
let headers=新的headers();
headers.append('Content-Type','application/json');
headers.append('Accept','application/json');
常量fn=async()=>{
而(i<5){
承诺,推动(
取('https://reqres.in/api/users/"我,{
模式:“cors”,
标题:标题
})
.then(response=>response.json())
)
i++;
}
等待承诺。所有(承诺)。然后(数据=>{
控制台日志(数据);
})
}

fn()
此外,您可以通过创建URL数组,然后调用
Promise来调用此方法。all
通过这些URL进行映射,并返回一个包含数组中所有响应的单个Promise:

let headers=新的头({'Content-Type':'application/json','Accept':'application/json'});
让params={mode:'cors',headers};
(异步函数(){
//创建一个数组或URL
常量URL=[…数组(4).keys()].map(i=>`https://reqres.in/api/users/${i+1}`);
const response=wait Promise.all(url.map(url=>fetch(url,params)))
const data=wait Promise.all(response.map(res=>res.json()))
console.log(数据)

}());
你应该把结果推到
Promise.all()
code中的
数据中。谢谢@Barmar得到了它。该死,我已经被困在这几个小时了,真不敢相信我没有这么做,谢谢。谢谢,这真的很棒,因为我的数据已经在一个数组中了。你也可以在一行中创建URL数组,完整的逻辑可以在几行中实现。谢谢,我想越短越好。