如果语句将 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。为了让承诺有机会解决,应该使用 await
或 Promise.then
方法。
const ttt = currentUser.changedPasswordAfter(decoded.iat);
ttt.then((result) => {
if (result)
console.log('Promise returned true')
else
console.log('Promise returned false')
})
我正在我的应用程序中进行身份验证。 并且有这样的代码
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。为了让承诺有机会解决,应该使用 await
或 Promise.then
方法。
const ttt = currentUser.changedPasswordAfter(decoded.iat);
ttt.then((result) => {
if (result)
console.log('Promise returned true')
else
console.log('Promise returned false')
})