【问题标题】:JavaScript - Why does my API call variable return undefined?JavaScript - 为什么我的 API 调用变量返回未定义?
【发布时间】:2020-11-05 20:32:12
【问题描述】:

我正在开发一个简单的应用程序来检查高分,目前我有 API 将它的值返回到控制台,但是当我尝试与这些数据交互时它返回未定义

在下面的代码中,我使用“await highscores.getStats”调用 API,但例如,当我尝试 console.log 时,“highScoreData”的值返回未定义。我是 JS 编程的新手,所以任何帮助都会得到帮助。

当前 api 返回一个 json 对象并将其值打印到控制台。这一切正常。

const Hiscores = require('osrs-hiscores').default;
const hiscores = new Hiscores({
  timeout: 6000
});


async function getHighscores() {
  let namePara = document.getElementById("UsrName").value;
  let typePara;
  let validArgument = false;

  if (namePara.length <= 12 && namePara.length > 0) {
    console.log("Valid Name");
    validArgument = true;
  } else {
    console.log("Invalid Name");
    validArgument = false;
  }
  if (validArgument === true) {

    console.log(`Player Name: ${namePara}`);
    const highScoreData = await hiscores.getStats(`${namePara}`)
      .then(res => console.log(res))
      .catch(err => console.error(err));

  }
}

【问题讨论】:

  • hiscores.getStats 错误可能在这里,它可能没有正确返回承诺。
  • @Keith 你知道我可以尝试的解决方案吗?

标签: javascript json api


【解决方案1】:

当您使用不应该使用 then/catch 的 await 语法时,结果在“highScoreData”常量中,这就是您应该记录的内容。此外,如果您想使用 await 语法捕获错误,您应该使用那些来自 Java 或 PHP 等其他编程语言的人更熟悉的 try/catch 方法。

try {
  const highScoreData = await hiscores.getStats(`${namePara}`);
  console.log(highScoreData);
} catch (err) {
  console.error(err);
}

【讨论】:

  • 您是一位绅士和一位学者先生,这非常有效,谢谢!
  • 很高兴我能帮上忙 :)
猜你喜欢
  • 2021-11-15
  • 2012-01-16
  • 1970-01-01
  • 2019-05-03
  • 2013-06-21
  • 2021-10-22
  • 1970-01-01
  • 2017-11-12
  • 1970-01-01
相关资源
最近更新 更多