javascript - Javascript İf Promise 加载 Onclick 然后 İf 再次 Onclick 不再加载?
问题描述
var sarki = document.getElementsByClassName("sarki")[0];
var modal = document.getElementById("myModal");
var span = document.getElementsByClassName("close")[0];
sarki.onclick = function () {
document.getElementsByClassName("siyah")[0].innerHTML = "<div class='loader'></div>";
Promise.all([
fetch('blabla.txt').then(x => x.text())
]).then(([sarki]) => {
document.getElementsByClassName("siyah")[0].innerHTML = sarki;
}),modal.style.display = "block",document.title="blabla";
}
span.onclick = function() {
modal.style.display = "none",document.title="blabla";
}
window.onclick = function(event) {
if (event.target == modal) {
modal.style.display = "none",document.title="blabla";
}
}
如您所见,单击按钮是否会获得 txt 文件,但再次如您所见,我打开模式,您可以关闭该模式,但如果您再次单击该按钮(不刷新页面),则该 txt 文件将再次加载...想检查是否加载了 txt 文件然后不再加载,因为我制作了歌曲列表,但如果再次加载,播放歌曲正在停止......
如果加载的文件不再使用 javascript(没有库)加载它,我该怎么办?
解决方案
您需要跟踪文本文件是否已加载。您也不需要Promise().all()
,因为您正在处理单个因素(文件),而不是多个因素。
let file; //<-- file loaded tracker
sarki.onclick = function () {
let prom = new Promise(res => {
!file ?
fetch('blabla.txt').then(x => res(file = x.text())) :
res(file);
});
prom.then(file => {
document.getElementsByClassName("siyah")[0].innerHTML = file;
});
}
推荐阅读
- android - 是否有必要保护 .so 文件中的机密(例如密钥)?
- r - 用比例覆盖直方图上的原始数字
- json - 如果 API 中存在空白或 null,则 JSON 序列化
- json - Echarts - 基于 Json 数据的动态多折线图
- java - AWS DynamoDB 在 Map 属性中按键查找项目(不是分区键)
- azure-devops - Azure DevOps 是否可以对队列中的构建进行分组
- c++ - 关于在 C++ 中使用命名空间 std
- json - 如何在postgresql中合并两个json_array
- angular - 我想使用 Ionic 框架将我现有的复杂 Angular 项目转换为移动应用程序。任何人都可以建议我的程序吗?
- php - laravel 路由名称参数