javascript - 脚本标签未同步呈现
问题描述
这是我正在使用的代码
<body>
<script type="text/javascript" src = "http://localhost:3000/common_assets/navbar.js"></script>
<script type="text/javascript" src = "http://localhost:3000//index.js"></script>
<h1>MonkaHmm...</h1>
</body>
两个脚本都呈现 html 并且它们都可以工作问题是第二个脚本总是最后呈现所以 MonkaHmm... 出现在页面中间。
这是第二个脚本标签中的代码
async function cardData(){
var response = await fetch('http://localhost:3000/Board_Members.json');
var carddata = await response.json();
carddata.forEach(function(membercard){
var member_cards = document.createElement("div");
var code = `
<div class="member_cards card-4">
<img class = "img_member" src="http://localhost:3000/IMAGES/jonipic.jpg">
<div class="description">
<h5>${membercard.name}</h5>
<h5>${membercard.title}</h5>
${membercard.description}
</div>
</div>
<link rel="stylesheet" type="text/css" href="http://localhost:3000/index.css">
`
member_cards.innerHTML = code;
document.body.appendChild(member_cards);
});
}
cardData();
我感觉这是因为 fetch 而发生的,但它在 async/await 函数中,所以我认为它会同步运行,但老实说我不知道。帮助我的 pepega 程序员伙伴
解决方案
当你调用cardData()
它时,它会调用 async 函数并返回一个 Promise。浏览器不会等待响应继续呈现页面。
您可以在执行异步调用之前创建member_cards
div 或占位符并附加它,并在收到响应时将卡片添加到其中。
推荐阅读
- php - 如何为centos安装特定的包和版本
- sql - 检查 NULL 时 SQL 查询中的可选参数非常慢
- git - Git项目子模块组织
- angular - 不允许的 MIME 类型(“text/html”)错误 - Angular Github 页面
- symfony - Symfony 4.3 错误:您不能同时设置“template.hinclude_default_template”和“fragments.hinclude_default_template”
- java - 用JAVA填充二维数组
- mongodb - MongoDB - 加入集合、过滤和排序
- html - 如何在网页中流式传输 mp3 文件?
- azure - .NET 堆栈中的 Azure App Service 可以执行 PHP 代码
- angular - 如果单击某个按钮,如何显示阻止?