如果语句将 FALSE promise 视为 TRUE

If statement considers FALSE promise as TRUE

我正在我的应用程序中进行身份验证。 并且有这样的代码

  const ttt = currentUser.changedPasswordAfter(decoded.iat);
  console.log(ttt);
  if (ttt) {
    console.log('if thinks ttt is true');

changedPasswordAfter 重新承诺(真或假) 所以我 运行 请求并将其输入控制台。

Promise { false }
if thinks ttt is true

如您所见 ttt 为 FALSE 但 IF 语句确定它为 TRUE 。 我该如何解决?

因为 ttt(这是一个非常糟糕的变量名称)是一个 Promise 而不是布尔值,所以 if 语句 return True 因为变量 ttt 具有引用(不是未定义或 null)。 尝试添加 await 关键字。它会工作,但你必须使函数 Async

const ttt = await currentUser.changedPasswordAfter(decoded.iat);
  console.log(ttt);
  if (ttt) {
    console.log('if thinks ttt is true');

Promise 是一个对象 - 因此,它是“真实的”。只有 promise 的 resolved 值可以是 true 或 false。为了让承诺有机会解决,应该使用 awaitPromise.then 方法。

const ttt = currentUser.changedPasswordAfter(decoded.iat);
ttt.then((result) => {
   if (result)
     console.log('Promise returned true')
   else
     console.log('Promise returned false')
})