【发布时间】:2020-06-28 19:00:38
【问题描述】:
我尝试了几种从异步函数返回对象的方法。我对 JavaScript 很陌生,我不明白为什么这不起作用。
该函数使用 API 返回一些财务数据,然后在获得响应后将返回的 Object 映射到另一个我要返回的对象。
如果我 console.log 对象,一切正常。但是在我的终端中有很多数字并不是我真正希望实现的。
我尝试了以下方法:
let someObject = fetchData(url);
console.log(someObject)
给我“承诺{}”
再试一次:
const returnFetchData = async() => {
const objectToReturn = await fetchData(url);
return objectToReturn;
}
console.log(returnFetchData);
给我“[AsyncFunction: returnFetchData]”
这是我的代码:
async function fetchData(urlLink){
const res = await fetch(urlLink);
const out = await res.json();
const timeSeries = out['Time Series (Daily)'];
let returnObject = {
dates: [],
adjustedClose: []
}
Object.entries(timeSeries).forEach(
([key, value]) => {
returnObject.dates.push(key)
returnObject.adjustedClose.push(value['5. adjusted close'])
}
);
return returnObject;
}
编辑: 我想从 returnObjects.adjustedClose 返回数组。
到目前为止,所有解决方案都返回了一个承诺。 这个数组应该用在另一个函数中,我应该把它映射到那个函数中吗?
【问题讨论】:
-
异步函数返回承诺。您可以使用承诺的
.then回调,例如promise.then(function(result){...}),或者,如果您在异步函数中,await承诺,var result = await promise;
标签: javascript asynchronous async-await