每次提取完成后,我想获取返回的数据,因为在完全提取之后,正确的时间戳将在那里,但是该函数将返回带有空时间戳的链接,而不是所有数据的最新时间戳。
async function pushData(url) {
let settings = { method: "Get" };
let timestamp = "";
let i = 0;
fetch(url, settings)
.then(res => res.json())
.then((json) => {
json.forEach(function (object) {
console.log(object);
i++;
});
timestamp = json[i-1].timestamp;
});
return await 'https://www.bitmex.com/api/v1/trade?count=1000&symbol=XBTUSD&startTime=' + timestamp;
}
var test = pushData('https://www.bitmex.com/api/v1/trade?count=1000&symbol=XBTUSD');
console.log(test);
答案 0 :(得分:1)
您必须在此处通过使用Promise
/ async
来使用JavaScript await
,就像我在下面的代码中为您所做的那样:
async function pushData(url) {
let settings = { method: "GET" };
let timestamp = "";
let i = 0;
let res = await fech(url, settings)
res = await res.json();
res.forEach(function (object) {
console.log(object);
i++;
});
timestamp = res[i - 1].timestamp;
return {
res: res,
timestamp: timestamp
};
};
(async() => {
var test = await pushData('https://www.bitmex.com/api/v1/trade?count=1000&symbol=XBTUSD');
console.log(test);
console.log("Timestamp: " + test.timestamp)
console.log("Fetch Result: " + test.res)
})();
由于此函数为async
,因此它返回一个Promise
,也必须对其进行解析。您没有解决它-您从未使用await
或.then()
来解决它。
评论中提供了一些资源:async / await Stackoverflow Post MDN Docs