javascript - 有没有其他优雅的方式从 JSON 中获取数据并将其呈现给 DOM?
问题描述
有一个名为 contents.json 的简单 JSON 文件,我使用纯 JavaScript 代码在本地主机中获取这些数据,所以我的问题是有没有更好的方法来获取这种数据。
JavaScript
function fetchData(){
fetch('http://localhost:5500/proje/contents.json').then(response => {
return response.json();
}).then(data => {
console.log(data.Contents);
const html = data.Contents
.map(movie => {
return `
<div class="column">
<img id="${movie.Title}" src="${movie.Poster}" class="item img-2">
<b class="text">${movie.Title}</b>
</div>
`
}).join('');
document.querySelector('#app').insertAdjacentHTML('afterbegin',html);
}).catch(error => {
console.log(error);
});
}
HTML
<div id="app"></div>
图片
解决方案
如果您在谈论有异步等待的方法,它将看起来像这样
async function fetchingData(){
let data= await fetch('http://localhost:5500/proje/contents.json').json(),
html = data.Contents.map(movie => {
return `
<div class="column">
<img id="${movie.Title}" src="${movie.Poster}" class="item img-2">
<b class="text">${movie.Title}</b>
</div>
`
}).join('');)
document.querySelector('#app').insertAdjacentHTML('afterbegin',html);
}
async 告诉 js 引擎它将返回一个 Promise,但是如果将它与 await 结合使用,await 会使 JavaScript 等待,直到该 Promise 完成并返回其结果。函数执行将在 await 行暂停,直到 promise 解决,就这么简单。
推荐阅读
- python - 不同 socks5 代理的不同电子邮件验证结果
- ocaml - OCaml/ReasonML 是否支持核心语言或核心库中的 DSL?
- javascript - 为计数器创建重置按钮
- css - 如何在 div 上制作响应式背景
- java - 除非使用相同的命令编译包类,否则不会编译模块信息
- uml - 如何在 UML 中为字典添加简单的泛型类型注释?
- google-sheets - Google 表格:无法向图表系列添加标签
- javascript - 如何在 npm 模块上使用 web worker
- reactjs - 无法读取 Apollo 中未定义的属性“subscribeToMore”
- linux - 连接到主机 vm ip 端口 22:连接超时