Javascript Nodejs-axios-http请求循环

Javascript Nodejs-axios-http请求循环,javascript,node.js,axios,Javascript,Node.js,Axios,我对Axios和foreach循环有问题。我的Api提供程序只支持5个当代调用,因此我希望逐个调用,但当执行此代码时,每个主体都不会等待finish调用函数并接收错误代码429。如何解决这个问题?谢谢 async function call(url) { var options = { method: 'GET', url: url, auth: { username: '*****', password: '*****' } };

我对Axios和foreach循环有问题。我的Api提供程序只支持5个当代调用,因此我希望逐个调用,但当执行此代码时,每个主体都不会等待finish调用函数并接收错误代码429。如何解决这个问题?谢谢

async function call(url) {
  var options = {
    method: 'GET',
    url: url,
    auth: {
      username: '*****',
      password: '*****'
    }
  };
  var response = await axios.request(options);
  print(response.data["Id"])
}

app.get('/save', async (req, res) => {
  var options = {
    method: 'GET',
    url: 'getListUser',
    auth: {
      username: '***',
      password: '***'
    }
  };
  var response = await axios.request(options);

  response.data["users"].forEach( async (val) => {
    console.log("ENTER");
    var url = 'getDetailUser' + val["id"];
    var res = await call(url); // <- How to wait finish this?
    console.log("EXIT")
  }, (err) => {
      console.log(err)
  })
  res.status(200).send("ok").end();
});
异步函数调用(url){ 变量选项={ 方法:“GET”, url:url, 认证:{ 用户名:'******', 密码:'*****' } }; var响应=等待axios.request(选项); 打印(响应数据[“Id”]) } app.get('/save',异步(req,res)=>{ 变量选项={ 方法:“GET”, url:'getListUser', 认证:{ 用户名:'***', 密码:'***' } }; var响应=等待axios.request(选项); response.data[“users”].forEach(异步(val)=>{ 控制台日志(“输入”); var url='getDetailUser'+val[“id”]; var res=等待呼叫(url);//{ console.log(错误) }) res.status(200).send(“ok”).end(); }); 承诺。一切()都是正确的

await Promise.all(response.data["users"].map(val => {
   var url = 'getDetailUser' + val["id"];
   return call(url); 
}))

我想说@Ifaruki的答案是正确的,只是有一点小小的改变

await Promise.allSettled(response.data["users"].map(val => {
   var url = 'getDetailUser' + val["id"];
   return call(url); 
}))
在某些情况下,所有承诺都可能起作用,但如果任何一个承诺失败,承诺的全部结果都将是拒绝


代码429可以通过查看

FYI来解决,
Promise
无法与涉及回调ie
forEach
的循环一起工作。或者,您可以使用
进行of

try {
  for (const val of response.data['users']) {
    console.log("ENTER");
    var url = 'getDetailUser' + val["id"];
    var res = await call(url); 
    console.log("EXIT")
  }
} catch (error) {
  console.log(error)
}