Javascript:函数返回的是{}而不是整数这是我所期望的,是否发生问题?

问题描述

我对JavaScript(以及一般的编程)还是比较陌生的,所以如果这是一个愚蠢的问题,我会提前道歉。

我目前正在从事一个涉及股票价格的小型项目,但是遇到一个问题,需要解决一些问题。

我正在编写一个名为getStockPrice的函数,该函数接受一个股票报价器名称,并通过从alphavantage调用API函数返回股票价格(作为整数)。

async function getStockPrice(ticker) {
  let num = 0;
  await alpha.data.quote(ticker).then((data) => {
    num = parseInt(data["Global Quote"]["05. price"]);
  });
  console.log(num);
  return num;
}

函数中的console.log(num)行会按我期望的那样打印出股价。

但是,当我将getStockPrice中的值保存到变量中并将该变量插入到数据库中时,数据库将得到一个空对象{}而不是我想要的股票价格。

const price = getStockPrice(ticker);

这可能与JavaScript中的promises功能有关吗?由于记录getStockPrice的返回值会得到一个整数,所以我很惊讶该函数输出一个空对象。

如果有人能指出我正确的方向,我将非常感激!

解决方法

当异步函数返回一个Promise时,它将不起作用。

请改用以下代码。

async function getStockPrice(ticker) {
  const data = await alpha.data.quote(ticker);
  const num = parseInt(data["Global Quote"]["05. price"]);
  console.log(num);
  return num;
}

(async () => {
 const price = await getStockPrice(ticker);
 console.log(price);
})();
,

尝试添加 await,然后调用该函数。