Javascript 如何使用github api执行多个回迁,这些api相互依赖并返回数据
我试图从github api获取数据,并通过路由返回数据。但是,当我尝试将数据发送回客户端时,projects数组是空的 我已经尝试返回最后一个承诺中的数据,但它不起作用。这是否需要使用promissions/async/awaitJavascript 如何使用github api执行多个回迁,这些api相互依赖并返回数据,javascript,node.js,api,github,es6-promise,Javascript,Node.js,Api,Github,Es6 Promise,我试图从github api获取数据,并通过路由返回数据。但是,当我尝试将数据发送回客户端时,projects数组是空的 我已经尝试返回最后一个承诺中的数据,但它不起作用。这是否需要使用promissions/async/await router.get('/projects', (req, res) => { fetchRepos().then(res => { if (!res.ok) { res.send({
router.get('/projects', (req, res) => {
fetchRepos().then(res => {
if (!res.ok) {
res.send({
success: false,
message: 'Server Error'
})
return
}
return res.json()
}).then(repos => {
var projects = []
repos.forEach(element => {
fetch(element.languages_url + '?access_token=' + process.env.PERSONAL_ACCESS_TOKEN).then(res => res.json()).then(langs => {
langs = Object.keys(langs).map(e => e.toLowerCase())
projects.push({
title: element.name,
description: element.description,
link: element.html_url,
technologies: langs,
id: element.pushed_at,
webpage: element.homepage
})
console.log(projects)
})
});
console.log(projects)
res.send({
success:true,
data:projects
})
})
});
使用Promise.all()将多个承诺转换为一个,然后在all()启动时填充数组。我无法将所有承诺放在一起,因为语言api url取决于开始时从api进行的初始获取。您只需将第一个承诺移动到另一个,不管怎样,这只是一个if条件,只有在发生错误时才会触发case@Deiv ? 当第二个承诺依赖于它时,如何将第一个承诺移动到另一个承诺呢?因为您只是链接承诺,您可以直接使用.join结果,而不必执行souse promise.all()将多个承诺转换为一个承诺,那么数组将在all()的时间填充我无法将所有的承诺放在一起,因为语言api url取决于从api开始时发生的初始获取。您可以简单地将第一个承诺移动到另一个承诺,这只是一个仅在错误时触发的if条件case@Deiv ? 当第二个承诺依赖于它时,如何将第一个承诺移动到另一个呢?因为您只是将承诺链接起来,您可以直接使用.join结果,而不必这样做