我有一个展示我的项目的网站/作品集,使用Github API。我的目标是为这些项目创建一个筛选器,因此我在一些仓库的根目录中创建了一个名为“built-with.json”的文件,该文件仅存在于 两个仓库 中,仅用于测试目的。它是一个技术数组,包含我在项目中使用的所有技术(例如:["React", "Javascript",...])。因此,我需要获取Github API(该部分工作正常),然后获取该文件,并返回一个新的项目数组,但其中包含一个“filters”键,其值是“built-with.json” 中的数组。 例如:
Github API 返回(仅返回一个项目的示例):
但是它不起作用!我在控制台中得到了这个:
Github API 返回(仅返回一个项目的示例):
[{
"id": 307774617,
"node_id": "MDEwOlJlcG9zaXRvcnkzMDc3NzQ2MTc=",
"name": "vanilla-javascript-utility-functions",
"full_name": "RodrigoWebDev/vanilla-javascript-utility-functions",
"private": false
}]
我需要的新对象数组:
[{
"id": 307774617,
"node_id": "MDEwOlJlcG9zaXRvcnkzMDc3NzQ2MTc=",
"name": "vanilla-javascript-utility-functions",
"full_name": "RodrigoWebDev/vanilla-javascript-utility-functions",
"private": false,
"filters": ["HTML5", "CSS3", "JS", "React"]
}]
这就是我所做的:
const url = "https://api.github.com/users/RodrigoWebDev/repos?per_page=100&sort=created";
fetch(url)
.then((response) => response.json())
.then((data) => {
return data.map(item => {
//item.full_name returns the repositorie name
fetch(`https://raw.githubusercontent.com/${item.full_name}/master/built-with.json`)
.then(data => {
item["filters"] = data
return item
})
})
})
.then(data => console.log(data))
但是它不起作用!我在控制台中得到了这个:
有人可以帮助我吗?先感谢了。
注意:如果你发现一些语法错误,那是因为我的英语还在学习过程中。
.then()
链接到fetch()
上。fetch()
返回一个 Promise。Array.prototype.map()
返回一个数组。把它们放在一起,你最终得到了一个 Promise 数组。你可以使用Promise.all(arrayOfPs)
来解决这个 Promise 数组。 - Randy CasburnPromise.all
。请参考这里。 - Brendenfetch('https://raw.githubusercontent…
之前,你漏掉了一个return
。 - hackape