Javascript 异步/等待;未解析的变量或类型等待"; 让usersInAuth0=[]; for(设i=0;i{ return wait management.getUsers({per_page:100,page:page}) }

Javascript 异步/等待;未解析的变量或类型等待"; 让usersInAuth0=[]; for(设i=0;i{ return wait management.getUsers({per_page:100,page:page}) },javascript,async-await,webstorm,Javascript,Async Await,Webstorm,正在尝试使用异步/等待。从auth0管理API中,每页只能获得100个用户,因此在获得所有用户之前,我会发出几个请求 WebStorm给出警告(在第3行):“未解析的变量或类型等待” 在这种情况下,我应该如何使用async/await?为了使用await,它内部的函数必须是async。例如: let usersInAuth0 = []; for (let i = 0; i < 5; i++) { const usersInAuth0InPage = aw

正在尝试使用异步/等待。从auth0管理API中,每页只能获得100个用户,因此在获得所有用户之前,我会发出几个请求

WebStorm给出警告(在第3行):“未解析的变量或类型等待”


在这种情况下,我应该如何使用async/await?

为了使用
await
,它内部的函数必须是
async
。例如:

    let usersInAuth0 = [];    
    for (let i = 0; i < 5; i++) {
      const usersInAuth0InPage = await getUsersFromAuth0(i); // error in WebStorm
      if (_.isEmpty(usersInAuth0InPage)){
        return res.status(200).send(usersInAuth0);
      } else {
        usersInAuth0.push(usersInAuth0InPage);
      }
    }

    const getUsersFromAuth0 = async (page) => {
      return await management.getUsers({per_page:100, page: page})
    }
(异步()=>{
让usersInAuth0=[];
for(设i=0;i<5;i++){
const usersInAuth0InPage=wait getUsersFromAuth0(i);//webstorm中出现错误
if(u.isEmpty(usersInAuth0InPage)){
返回res.status(200).send(usersInAuth0);
}否则{
push(usersInAuth0InPage);
}
}
const getUsersFromAuth0=page=>management.getUsers({per_page:100,page:page});
})();

请注意,由于
management.getUsers
返回一个承诺,因此不需要使
getUsersFromAuth0
异步-只需返回承诺并等待它的分辨率更高


因为
async
函数返回承诺,所以您需要确保使用整个代码块的任何东西都能够处理其返回值,即承诺。(您的
返回res.status(200).send(usersInAuth0);
实际上不会返回该值-如果函数中的条件得到满足,函数将返回解析为该值的承诺)

解析错误,意外标记=>
是我复制并粘贴此directlySounds时遇到的错误,就像您使用的是不支持箭头功能的古老浏览器一样。理想情况下,在构建过程中使用Babel自动将ES6+语法(如箭头函数)转换为ES5语法。这使您能够使用最新和最好的语言版本进行编写,同时也允许过时的浏览器理解您的脚本。
(async () => {
  let usersInAuth0 = [];    
  for (let i = 0; i < 5; i++) {
    const usersInAuth0InPage = await getUsersFromAuth0(i); // error in webstorm
    if (_.isEmpty(usersInAuth0InPage)){
      return res.status(200).send(usersInAuth0);
    } else {
      usersInAuth0.push(usersInAuth0InPage);
    }
  }

  const getUsersFromAuth0 = page => management.getUsers({per_page:100, page: page});
})();