【发布时间】:2021-12-28 18:07:16
【问题描述】:
我正在使用此代码将每分钟更新一次的 .json 文件输入到根据 .json 数据更改图像的函数中。问题是我调用了带有 onload= html 属性的函数,它连续运行异步函数,这会消耗大量性能。
'''
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8"/>
<script type="text/javascript" src="profile.json"></script>
<script type="text/javascript">
async function request() {
const image = document.getElementById("RankImg"); ///set img var
const text = document.getElementById("ValoRank")
fetch("profile.json")
.then(response => response.json())
.then(data => {
console.log(data.response)
var requestrank = data.response.substring(0, 4)
console.log(requestrank)
switch (requestrank) { ///switch start
case "Iron":
image.src = 'Images/Iron.png' ;
text.innerHTML = data.response ;
break;
case "Bron":
image.src = 'Images/Bronze.png' ;
text.innerHTML = data.response ;
break;
case "Silv":
image.src = 'Images/Silver.png' ;
text.innerHTML = data.response ;
break;
case "Gold":
image.src = 'Images/Gold.png' ;
text.innerHTML = data.response ;
break;
case "Plat":
image.src = 'Images/Platinum.png' ;
text.innerHTML = data.response ;
break;
case "Diam":
image.src = 'Images/Diamond.png' ;
text.innerHTML = data.response ;
break;
case "Immo":
image.src = 'Images/Immortal.png' ;
text.innerHTML = data.response ;
break;
case "Radi":
image.src = 'Images/Radiant.png' ;
text.innerHTML = data.response ;
break;
default:
image.src = 'Images/Base.png' ;
}
})
} ///Twitch.tv/QuentinCly
</script>
</head>
<body>
<img src="Images/Base.png" alt="Valorant Rank" id="RankImg" onload="request().catch(error => {
console.error(error);
})">
<h1><span id="ValoRank">Valorant Rank </span></h1>
</body>
</html>
''' 我不想通过 onload 调用 request() 函数,我想在 profile.json 更新后调用它。
【问题讨论】:
-
UI 不知道文件是否已更新。唯一知道的方法是检查它。或者我不确定你真正要问的是什么。
-
我基本上想以比 onload 更优化的方式调用函数,因为它会无限期地重复函数
-
所以只需在页面加载或文档准备就绪时调用脚本,或者将脚本放在图像之后。
-
喜欢把脚本放在html图片之后?并保持加载?它不会一直做同样的事情
-
没有onload,直接打电话
request()
标签: javascript html json asynchronous