Javascript 等待抓取完成,直到返回数据
我希望在抓取完成时获取返回的数据,因为在完全抓取之后,正确的时间戳将在那里,但是函数将返回带有空时间戳的链接,而不是所有数据的最新时间戳Javascript 等待抓取完成,直到返回数据,javascript,node.js,Javascript,Node.js,我希望在抓取完成时获取返回的数据,因为在完全抓取之后,正确的时间戳将在那里,但是函数将返回带有空时间戳的链接,而不是所有数据的最新时间戳 async function pushData(url) { let settings = { method: "Get" }; let timestamp = ""; let i = 0; fetch(url, settings) .then(res => res.json())
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);
您必须在这里使用JavaScript
Promise
,使用async
/wait
,正如我在下面的代码中为您所做的那样:
异步函数pushData(url){
让设置={method:“GET”};
让timestamp=“”;
设i=0;
let res=等待fech(url、设置)
res=等待res.json();
res.forEach(函数(对象){
console.log(对象);
i++;
});
timestamp=res[i-1]。时间戳;
返回{
res:res,
时间戳:时间戳
};
};
(异步()=>{
var测试=等待推送数据('https://www.bitmex.com/api/v1/trade?count=1000&symbol=XBTUSD');
控制台日志(测试);
日志(“时间戳:+test.Timestamp”)
log(“获取结果:+test.res”)
})();
由于此函数是异步的
,因此它返回一个承诺
,该承诺也必须解析。您没有解决它-您从未使用wait
或.then()
来解决它
下面是评论中提供的一些资源:为什么不等待获取,而不是字符串?尝试不要将
await
和混合在一起。那么您的意思是将等待放在获取之前?用法:const response=wait-fetch(URL)代码>,参见stackoverflow Post这是否回答了您的问题?var test=不可能等待pushData,因为它不在函数中。仍然首先显示timestamp+fetch结果,然后显示变量test的数据;我将立即修改答案,使其在全球范围内发挥作用。我刚刚编辑了这个问题,以解决您的评论中强调的问题。