Javascript 使用增量

Javascript 使用增量,javascript,arrays,fetch,Javascript,Arrays,Fetch,我对循环和如何重写整个数组以获得所需数据有问题。 我需要获取数据,然后在下一次获取中嵌套“id”,以获取数据并合并2个数组。 如何在另一次获取中获取循环外部的数据,然后合并数据 `fetch(URL) .then(res => res.json()) .then(data => { let companies = data; for (let i = 0; i <= companies.length; i++) { fetch(`URL${c

我对循环和如何重写整个数组以获得所需数据有问题。 我需要获取数据,然后在下一次获取中嵌套“id”,以获取数据并合并2个数组。 如何在另一次获取中获取循环外部的数据,然后合并数据

`fetch(URL)
  .then(res => res.json())
  .then(data => {
    let companies = data;
    for (let i = 0; i <= companies.length; i++) {
      fetch(`URL${companies[i].id}`)
        .then(res => res.json())
        .then(data => {
          there loop is sending me data needed from 2nd fetch and 300 another data from first fetch.
        });
      // console.log(companies[i].name);
    }
  })
  .catch(error => console.log(error));`
获取(URL) .then(res=>res.json()) 。然后(数据=>{ 让公司=数据; for(设i=0;i res.json()) 。然后(数据=>{ 有一个循环正在向我发送第二次提取所需的数据和第一次提取所需的另外300个数据。 }); //console.log(公司[i].name); } }) .catch(错误=>console.log(错误))`
您可以使用
等待
进行第二次提取。在第一次提取中声明一个数组,每当在第二次提取中检索到数据时,都要推入数组。然后您可以访问for循环的外部

fetch('https://api.github.com/users?since=135')
  .then(res => res.json())
  .then(async (data) => {
    let users = data;
    let arr = [];
    for (let i = 0; i <= users.length; i++) {
      const response = await fetch(`https://api.github.com/users/${companies[i].login}`);
      const user = response.json();
      arr.push(user);
    }
    console.log(arr);
  })
  .catch(error => console.log(error));
fetch('https://api.github.com/users?since=135')
.then(res=>res.json())
。然后(异步(数据)=>{
让用户=数据;
设arr=[];
for(设i=0;i console.log(错误));

您可以使用
Promise.all()
等待所有
fetch
请求完成。
Promise.all
接受承诺数组并返回一个承诺,当所有传递的承诺都得到解决时,该承诺将得到解决。如果其中一个传递的承诺拒绝,
Promise.all
也会拒绝

fetch(URL)
  .then(res => res.json())
  .then(data => {
    let companies = data;
    let promises = [];

    for (let i = 0; i <= companies.length; i++) {
      let promise = fetch(`URL${companies[i].id}`)
        .then(res => res.json());

      promises.push(promise);
    }

    Promise
      .all(promises)
      .then(dataArrays => {
          // dataArrays[0] is the result from company 0
          // dataArrays[1] is the result from company 1 and so on
      })
      .catch(error => console.log(error));
      // console.log(companies[i].name);
    }
  })
  .catch(error => console.log(error));
fetch(URL)
.then(res=>res.json())
。然后(数据=>{
让公司=数据;
让承诺=[];
for(设i=0;i res.json());
承诺。推动(承诺);
}
允诺
.所有(承诺)
。然后(数据数组=>{
//dataArrays[0]是公司0的结果
//dataArrays[1]是公司1的结果,依此类推
})
.catch(错误=>console.log(错误));
//console.log(公司[i].name);
}
})
.catch(错误=>console.log(错误));

但是,如果可能,将所有
公司
请求合并为一个请求并在后端合并其数据将是最佳解决方案,因为这样会更高效。

您希望如何合并阵列?