Javascript return 嵌套函数的值打印未定义

Javascript return value from nested function prints undefined

我在这里尝试 return 来自 bcrypt.compare 的值,嵌套在一个函数中。

我想得到结果值(真或假)。

我正在使用 coffeescript。这是代码:

comparePasswordWithHash = (pass, hash) ->
  return bcrypt.compare pass, hash, (err, result) ->
    if err
      throw err
    else
      return result

console.log comparePasswordWithHash "bacon", hashedPassword # Should print true/false

使用此代码,打印的值未定义。

bcrypt.compare() 是异步的。这意味着它不会返回任何东西,而是调用您传递给它的回调。还有同步版的compare() --> bcrypt.compareSync().

我的 coffeescript 有点生疏,但我想你最终会使用 promise 得到这样的东西:

comparePasswordWithHash = (pass, hash) -> bcrypt.compare pass, hash

comparePasswordWithHash "bacon", hashedPassword
.then (response) ->  console.log response
.catch (error) -> console.log error