【问题标题】:SyntaxError: await is only valid in async function with argon2SyntaxError: await 仅在带有 argon2 的异步函数中有效
【发布时间】:2019-05-31 08:16:19
【问题描述】:

我在我的密码应用程序中实现argon2

try {
  if (await argon2.verify("<big long hash>", "password")) {
    // password match
  } else {
    // password did not match
  }
} catch (err) {
  // internal failure
}

但出现错误SyntaxError: await 仅在异步函数中有效。 如何使用异步功能?

【问题讨论】:

  • 您只能在异步函数中等待异步函数。例如async function verifyPassword(password){ if(await argon2.verify("&lt;big long hash&gt;", "password")){/*...*/} }

标签: node.js npm visual-studio-code argon2-ffi


【解决方案1】:

你必须用async关键字声明一个异步函数:

const myAsyncFunc = async (hashKey, password) => { //<-- declare as an async function
  try {
    if (await argon2.verify(hashKey, password)) {
      // password match
    } else {
      // password did not match
    }
  } catch (err) {
    // internal failure
  }
}

myAsyncFunc("<big long hash>", "password");
  • 更新了答案,使其更加详细

【讨论】:

  • @iKola,它对我不起作用 :(,我可以使用上面的代码创建一个辅助函数(异步)吗?
  • @VijayKumar 是的,您可以创建一个辅助函数来做到这一点。您只需将await 代码包装在一个声明为async 函数的函数中。如果不将 await 函数调用包装到异步函数中,则无法运行它。
  • @VijayKumar 我更新了答案以使其更清楚它是如何工作的。
猜你喜欢
  • 1970-01-01
  • 2020-09-11
  • 1970-01-01
  • 2020-12-07
  • 1970-01-01
  • 2021-11-04
  • 2020-09-07
  • 2019-09-12
  • 1970-01-01
相关资源
最近更新 更多