Javascript 如何在JS中调用async Wait,以便在一定时间后再次获取?
我有一个async await,如下所示,我只是获取一些JSON数据。很好。但是,如果您查看控制台,您会注意到在JSON数据中,有一个值finish,它基本上是一个Unix时间戳 当用户的当前时间戳大于该Unix时间戳时,我需要再次获取JSON数据。然后,我需要再次检查时间戳,并无限期地继续检查。只要当前时间超过完成时间戳,json数据就会更改 我该怎么做 这是一个关于这个的示例代码笔Javascript 如何在JS中调用async Wait,以便在一定时间后再次获取?,javascript,json,performance,asynchronous,async-await,Javascript,Json,Performance,Asynchronous,Async Await,我有一个async await,如下所示,我只是获取一些JSON数据。很好。但是,如果您查看控制台,您会注意到在JSON数据中,有一个值finish,它基本上是一个Unix时间戳 当用户的当前时间戳大于该Unix时间戳时,我需要再次获取JSON数据。然后,我需要再次检查时间戳,并无限期地继续检查。只要当前时间超过完成时间戳,json数据就会更改 我该怎么做 这是一个关于这个的示例代码笔 这段代码就是你要求的,我留下了/*把你的DOM更新代码放在这里*/你可以把你的DOM操作代码放在这里 功能睡
这段代码就是你要求的,我留下了
/*把你的DOM更新代码放在这里*/
你可以把你的DOM操作代码放在这里
功能睡眠(毫秒){
返回新承诺(resolve=>setTimeout(resolve,ms));
}
//这看起来很奇怪,因为jQuery不喜欢文档就绪中的异步代码。
$(()=>{(异步()=>{
让getData=async()=>{
log('getData');
let response=等待获取(
"https://d2nzqyyfd6k6c7.cloudfront.net/nova-player-history/nova969-current.json"
)
让json=wait response.json()
让tDiff=json.finish-Math.round((new Date()).getTime()/1000);
console.log(json)
log(`Refresh in${tDiff}s`)
/*将DOM更新代码放在这里*/
等待睡眠(tDiff*1000)
}
//永远运行它
对于(;;)等待getData()
})()});
从json响应中获取时间戳(如果需要,将其转换为数字),执行设置超时(this.getData,timestamp-new Date().getTime())
以在时间戳过去后安排另一次提取?Google设置超时
。
class aClass {
async getData() {
try {
let response = await fetch(
"https://d2nzqyyfd6k6c7.cloudfront.net/nova-player-history/nova969-current.json"
);
let json = await response.json();
return json;
} catch (e) {
console.log("Error!", e);
}
}
}
$(document).ready(function() {
const myClass = new aClass();
var promise = myClass.getData()
.then(function(data){
console.log(data);
});
});