Javascript 尝试循环axios请求并异步推送它

Javascript 尝试循环axios请求并异步推送它,javascript,asynchronous,async-await,axios,Javascript,Asynchronous,Async Await,Axios,在getProject中,我通过调用API获取项目的对象。然后我尝试遍历这些获取的对象,并为每个项目使用唯一的url来调用projects.map中的另一个API console.log('arr',arr)提供了一系列承诺,其中一些是失败的请求,一些是成功的。这是因为某些项目可能没有有效的API。但我想要一个有成功承诺的阵列 这甚至没有到达console.log('pr'结果)行,我不知道为什么 我做得对吗?尝试修改您的代码,使arr是一个函数数组,可以为axio请求返回承诺(而不是像您当前所

getProject
中,我通过调用API获取项目的对象。然后我尝试遍历这些获取的对象,并为每个项目使用唯一的url来调用
projects.map中的另一个API

console.log('arr',arr)
提供了一系列承诺,其中一些是失败的请求,一些是成功的。这是因为某些项目可能没有有效的API。但我想要一个有成功承诺的阵列

这甚至没有到达console.log('pr'结果)
行,我不知道为什么


我做得对吗?

尝试修改您的代码,使
arr
是一个函数数组,可以为axio请求返回承诺(而不是像您当前所做的那样,
arr
是一个实际axios请求承诺数组):


这是axios等方法的一个微妙之处。all通常工作,与本机的Promise.all方法类似。有关更多信息,请参见“axios API”上方的示例。

如果您没有进入最终控制台.log,是否在日志中收到任何警告/错误?比如一个未经证实的承诺错误?确保控制台显示警告。我按照您告诉我的方式操作,
arr
包含大量
f item()
而不是我想要的结果。我必须如何使用这些?我确实
let result=wait axios.all(arr)
在最后,但仍然是一样的。您好,请参阅上面更新的答案-这对您有用吗?是的。很抱歉谢谢
async function getData() {
  let getProject =
    await axios.get('url', {
      auth: {
        username: 'username',
        password: 'pw'
      }
    })

  let projects = await getProject.data.value;
  let arr = []

  projects.map(project => {
    let item = axios.get(`url`, {
      auth: {
        username: 'username',
        password: 'pw'
      }
    })

    arr.push(item)
    console.log('arr', arr)
  })

  let result = await axios.all(arr)

  console.log('pr', result)

  return arr;
}
let projects = await getProject.data.value;

// Map all project items to functions that return promises
let arr = projects.map(project => {

    // Return a function that returns a promise
    return function() {     

        // Returns a promise for GET request
        return axios.get(`url`, {
            auth: {
                username: 'username',
                password: 'pw'
            }
            })
    } 
})

// Axios.all will concurrently perform all GET requests 
// in arr (ie the mapping of projects to functions that
// return promises from axios.get )
let result = await axios.all(arr)

// Should print results from axio.get (if all requests successful)
console.log('pr', result)