问题描述
我对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
,然后调用该函数。