我有一个使用flask的网站,其中显示了一些数据。有时候,正在显示的数据需要刷新,因此我需要重新加载网站以显示503页,然后完成一次重新加载以显示刷新的数据。到目前为止,这是我如何完成此操作:
(相关的服务器端python:)
@app.route("/checkifreloading/")
def checkifreloading():
with open('static/dat.json') as data:
try:
loads(data.read()) # When not refreshing, data will be a valid JSON string
return encode({"code": 200, "response": False})
except JSONDecodeError: # When refreshing, data will be blank
return encode({"code": 200, "response": True})
(相关的客户端HTML:)
<body onload="load_func()">
<!-- data display -->
</body>
(相关客户端JS:)
async function getAsync(url) {
let response = await fetch(url);
return await response.json();
}
function check_for_refresh() {
getAsync("../checkifreloading/").then(function(results) {
if (results['response'] === true) {
window.location.reload();
}
});
}
function load_func() {
setInterval(check_for_refresh, 5000); // check every five seconds
}
tldr:我将GET发送到一个端点,如果数据每五秒钟刷新一次,则该端点返回true
这有问题,尤其是当您进行很多公开会议时。有没有更好的方法可以做到这一点?
答案 0 :(得分:0)
在不太大规模的应用程序中,您可以使用Ajax, 显然,如果您要构建更大的项目,请使用Async或Service worker,但是在这种情况下,service worker效果最好。
答案 1 :(得分:-1)
使用javascript获取和显示数据的最佳方法是 1.阿贾克斯 2.异步请求 3.服务人员 做好阅读有关他们的事情