Javascript Axios内循环

Javascript Axios内循环,javascript,for-loop,axios,Javascript,For Loop,Axios,我试图在for循环中处理axios请求,但循环甚至在axios之前就已经完成了。以下是我的代码: let findEmail = async() => { for (var i = 0; i < csvData.length; i++){ axios.post('https://email-finder.herokuapp.com/find', { "first_name": "Irinaa", "last_name": "xyz",

我试图在for循环中处理axios请求,但循环甚至在axios之前就已经完成了。以下是我的代码:

let findEmail = async() => {
 for (var i = 0; i < csvData.length; i++){
    axios.post('https://email-finder.herokuapp.com/find', {
        "first_name": "Irinaa",
        "last_name": "xyz",
        "domain": "xyxz.com"
    }).then((response) => {
        if(response.status === 500){
            console.log('no email found');
        }
        else{
            console.log(response.data);
        }
    }, (error) => {
        console.log('no email found ', i);
    });
      console.log('axios request done');
 }
} 
让findEmail=async()=>{
对于(变量i=0;i{
如果(response.status==500){
console.log(“未找到电子邮件”);
}
否则{
console.log(response.data);
}
},(错误)=>{
console.log('未找到电子邮件',i);
});
log('axios请求完成');
}
} 

我希望循环等待请求完成,然后转到递增I变量。任何帮助都将不胜感激。谢谢

因为您使用的是异步函数,请尝试使用wait而不是then。 它将使for循环同步运行

let findEmail = async () => {
      for (var i = 0; i < csvData.length; i++) {
        try {
          let response = await axios.post(
            "https://email-finder.herokuapp.com/find",
            {
              first_name: "Irinaa",
              last_name: "xyz",
              domain: "xyxz.com"
            }
          );
          if (response.status === 500) {
            console.log("no email found");
          } else {
            console.log(response.data);
          }
        } catch (error) {
          console.log("no email found ", i);
        }
        console.log("axios request done");
      }
    };
让findEmail=async()=>{
对于(变量i=0;i
请查看T.J.Crowder关于如何在同步函数中等待JavaScript异步调用的解释。。

如果您正在等待返回数据,那么您正在等待状态200。 尝试添加:

    else if(response.status === 200){
        console.log(response.data);
    }

使事情同步和行为同步之间有一个很大的区别。很好。这是我的第一个答案,所以你可以说noob spotted。尝试使用承诺,如果你擅长观察,也可以帮助你