亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Nodejs axios http 請求循環

Nodejs axios http 請求循環

至尊寶的傳說 2023-10-14 15:43:10
我對 Axios 和 foreach 循環有疑問。我的 Api 提供程序僅支持 5 個同時調用,因此我想一一調用,但是當執行此代碼時,每個主體不等待完成調用函數并收到錯誤代碼 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();});
查看完整描述

3 回答

?
呼啦一陣風

TA貢獻1802條經驗 獲得超6個贊

僅供參考,Promise無法使用涉及回調的循環,即forEach?;蛘撸梢允褂胒or 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)

}


查看完整回答
反對 回復 2023-10-14
?
臨摹微笑

TA貢獻1982條經驗 獲得超2個贊

只需稍作改動


await Promise.allSettled(response.data["users"].map(val => {

? ?var url = 'getDetailUser' + val["id"];

? ?return call(url);?

}))



查看完整回答
反對 回復 2023-10-14
?
慕容3067478

TA貢獻1773條經驗 獲得超3個贊

Promise.all() 就是這樣


await Promise.all(response.data["users"].map(val => {

   var url = 'getDetailUser' + val["id"];

   return call(url); 

}))


查看完整回答
反對 回復 2023-10-14
  • 3 回答
  • 0 關注
  • 181 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號