gpt4 book ai didi

javascript - 如何在 JS 中调用异步等待,以便在一定时间后再次获取?

转载 作者:行者123 更新时间:2023-11-30 14:50:32 27 4
gpt4 key购买 nike

我有一个async awai,如下所示,我只是在其中获取一些 JSON 数据。一切顺利。但是,如果您查看控制台,您会注意到在 JSON 数据中,有一个值 finish 基本上是一个 Unix 时间戳。

当用户的当前时间戳大于 Unix 时间戳时,我需要再次获取 JSON 数据。然后,我需要再次检查时间戳并继续无限地这样做。只要当前时间高于完成时间戳,json 数据就会更改。

我该怎么做?

这是一个关于这个的示例codepen https://codepen.io/hellouniverse/pen/XVEBXY?editors=1012

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);
});
});

最佳答案

这段代码是按照你的要求做的,我把 /* Put Your DOM update code here*/ 放在你可以放你的 dom 操作代码的地方。

function sleep(ms) {
return new Promise(resolve => setTimeout(resolve, ms));
}

// This looks weird because jQuery does not like async code in document ready.
$(() => { (async () => {
let getData = async () => {
console.log('getData');
let response = await fetch(
"https://d2nzqyyfd6k6c7.cloudfront.net/nova-player-history/nova969-current.json"
)
let json = await response.json()
let tDiff = json.finish - Math.round((new Date()).getTime() / 1000);
console.log(json)
console.log(`Refresh in ${tDiff}s`)
/* Put Your DOM update code here*/

await sleep(tDiff * 1000)
}

// Run It forever
for (;;) await getData()

})()});

关于javascript - 如何在 JS 中调用异步等待,以便在一定时间后再次获取?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48197012/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com