You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

async函数getToken调用返回undefined,无法返回布尔值该如何修复?

问题原因
  • 你声明的async函数外层没有主动返回任何值,then回调内部的return仅作用于回调函数本身,不会传递给外层的getToken函数,因此调用时默认返回undefined
  • async函数本身返回的是Promise对象,无法同步获取内部返回的布尔值,需要配合await或者then读取结果
修复方案

推荐使用async/await的写法,更符合异步函数的编码习惯:

async function getToken(auth) {
  if (!(auth.startsWith('!t!'))) {
    auth = "!t!" + auth;
  }
  // 等待异步查询结果
  const value = await db.get(auth);
  if (value == "valid") {
    console.log('Token Accepted');
    return true;
  } else if (auth.slice(3) == process.env['token']) {
    console.log('Master Token Accepted');
    return true;
  } else {
    console.log('Token Denied');
    return false;
  }
}

如果你习惯用Promise链式调用,也可以直接返回整个Promise链:

async function getToken(auth) {
  if (!(auth.startsWith('!t!'))) {
    auth = "!t!" + auth;
  }
  // 直接返回Promise实例
  return db.get(auth).then(value => {
    if(value == "valid"){
      console.log('Token Accepted');
      return true;
    }else if(auth.slice(3) == process.env['token']){
      console.log('Master Token Accepted');
      return true;
    }else{
      console.log('Token Denied');
      return false;
    }
  });
}
调用示例

调用时需要用异步方式读取返回值:

// 方式1:在async函数内用await读取
async function test() {
  const result = await getToken('测试token');
  console.log(result); // 输出true或false
}
test();

// 方式2:用then回调读取
getToken('测试token').then(result => {
  console.log(result); // 输出true或false
});

内容的提问来源于stack exchange,提问作者CHarlie l

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 21:15:05