Javascript 如何使用github api执行多个回迁,这些api相互依赖并返回数据

Javascript 如何使用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({

我试图从github api获取数据,并通过路由返回数据。但是,当我尝试将数据发送回客户端时,projects数组是空的

我已经尝试返回最后一个承诺中的数据,但它不起作用。这是否需要使用promissions/async/await

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结果,而不必这样做