简体   繁体   English

异步/等待,“未解析的变量或类型等待”

[英]Async/await, “unresolved variable or type await”

    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})
    }

Trying to use async/await. 试图使用async / await。 From the auth0 management API you can only get 100 user per page so I'm making several request until I have all users. 从auth0管理API,你每页只能获得100个用户,所以我要多次请求,直到我拥有所有用户。

WebStorm gives the warning (on line 3): "unresolved variable or type await". WebStorm发出警告(第3行):“未解析的变量或类型等待”。

How am I suppose to use async/await in this situation? 在这种情况下,我怎么想使用async / await?

In order to use await , the function it's inside needs to be async . 为了使用await ,它内部的函数需要是async For example: 例如:

(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});
})();

https://codereviewvideos.com/blog/unresolved-variable-type-await/ https://codereviewvideos.com/blog/unresolved-variable-type-await/

Note that since management.getUsers returns a Promise, you don't need to make getUsersFromAuth0 async - just return the promise and await its resolution higher up. 请注意,由于management.getUsers返回Promise,因此您无需使getUsersFromAuth0异步 - 只需返回promise并await其解析更高。

Because async functions return promises, you'll need to make sure that whatever consumes this whole code block is able to handle the its return value being a promise. 因为async函数返回promises,所以你需要确保消耗这整个代码块能够处理它的返回值是一个promise。 (your return res.status(200).send(usersInAuth0); won't actually return that value - the function will return a promise that resolves to that value, should the conditional it's inside be fulfilled) (你的return res.status(200).send(usersInAuth0);实际上不会返回该值 - 如果满足条件,函数将返回一个解析为该值的promise

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM