首页 > 解决方案 > 我需要在 forEach 中调用 api 并将这些响应放入一个数组并返回。但它在 js(javascript) 中作为空数组返回

问题描述

这是我的代码,语言是javascript。

    return new Promise(async (resolve, reject) => {
      let responses=  await axios.get("https://api.surveymonkey.com/v3/surveys/"+id+"/responses/bulk", {
        headers: {
          'Authorization':config
        }
      })

      resolve(responses.data)
    });
  }
responses_by_nicknames=async(nicknames)=>{

  return new Promise(async (resolve, reject) => {
   
    _.forEach(nicknames, function(value) {
      let  responses_by_nicknames2=[]

    let obj ={"nickname":value.nickname}
      console.log(value)
      _.forEach(value.surveys,async function(value2) {

    Promise.all([responses_by_id(value2.id)]).
       then(body => { 
      
                 responses_by_nicknames2.push(res)
        
      })
})
      console.log("!!@@",responses_by_nicknames2)
    })
resolve(responses_by_nicknames)
 })
 }

Console.log 也给出了一个空数组。据我了解,控制台日志和“解决”在调用 API 之前执行。

标签: javascriptapiasynchronousforeachsynchronous

解决方案


推荐阅读