[英]Navigating JSON tree to data from Reddit API
我会尽量保持简短。 我是一名在校学生,一直在尝试从 Reddit 的首页检索前 5 篇帖子,并在 HTML 页面上显示标题和 URL。 这可能是非常简单的事情,但我无法让它发挥作用。 我想将数据从单个变量传递到我的 Handlebars 模板。 我不断收到未处理的承诺警告。 这是我的代码。
let url = 'https://www.reddit.com/.json?limit=5';
let settings = { method: "Get"};
let redditData = ""
fetch(url, settings)
.then(res => res.json())
.then(data => {
redditData = [
{
title: data.children.data.title,
url: data.children.data.url_overriden_by_dest
}
];
});
data
对象的结构与您对其进行编码的方式不同。 以下是如何从第一个孩子中提取您想要的信息:
let url = 'https://www.reddit.com/.json?limit=5';
let settings = { method: "Get"};
let redditData = ""
fetch(url, settings)
.then(res => res.json())
.then(data => {
redditData = [
{
title: data.data.children[0].data.title,
url: data.data.children[0].data.url_overriden_by_dest
}
];
});
您可能想在此处查看有关fetch
函数如何工作的一些文档。
另外,请在此处检查 Promise 的工作方式。
话虽如此,您必须访问对象属性,只有当 Promise 完成检索数据时。 一种方法是使用Promise.allSettled
函数。
请查看以下代码片段,其组织方式略有不同:
const url = "https://www.reddit.com/.json?limit=5"; const promise = fetch(url).then(res => res.json()); function formatHandlebarsData(data) { const childrenObj = data.value.data.children; return childrenObj.map(element => ({ title: element.data.title, url: element.data.url })); } Promise.allSettled([promise]).then(([data]) => { const handlebarsData = formatHandlebarsData(data); // You can use the object now console.log(handlebarsData); });
惊人的。 我能够让它工作
let url = 'https://www.reddit.com/.json?limit=5';
let settings = { method: "Get"};
let redditData = ""
fetch(url, settings)
.then(res => res.json())
.then(data => {
redditData = [
{
title: data.data.children[0].data.title,
url: data.data.children[0].data.url_overriden_by_dest
}
];
});
谢谢!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.