Javascript 节点多个get请求循环传递到数组

Javascript 节点多个get请求循环传递到数组,javascript,node.js,promise,Javascript,Node.js,Promise,我有一个get请求,其中有一个get请求循环。 它们传回我要添加到数组中的数据, 用什么最好的方法来构造我的代码,可以从循环内部传回值,并且当它们全部完成时,可以将数据记录到console.log中 app.get('/outer', (res, req) => { let url = 'https://samplejson.json'; https.get(url, (response) => { response.on('data', (data) =

我有一个get请求,其中有一个get请求循环。 它们传回我要添加到数组中的数据, 用什么最好的方法来构造我的代码,可以从循环内部传回值,并且当它们全部完成时,可以将数据记录到console.log中

app.get('/outer', (res, req) => {
    let url = 'https://samplejson.json';
    https.get(url, (response) => {
      response.on('data', (data) => {
        let parsed = JSON.parse(data);
        let collected = [];
        parsed.forEach((myId) => {


                let innerUrl = `https://samplejson/${innerId}.json`;
                https.get(innerUrl, (innerResponse) => {
                    innerResponse.on('data', (innerData) => {
                        let parsedInner = JSON.parse(innerData);
                        //console.log(JSON.stringify(parsedInner,null,2));
                        let collect = parsedInner.title.trim().split(' ');
                        collect.forEach((w) => {
                            //console.log(w); // works
                            collected.push(w);
                        });
                    }, (err) => res.status(400).send(err));
                 } , (err) => res.status(400).send(err));


        }, (err) => res.status(400).send(err));
        console.log('ending'); // never shown ?
        console.log(collected); // never shown ?
      });
  }, (err) => res.status(400).send(err));
}, (err) => {
    res.status(400).send(err);
});
我的问题是收集的数组永远不会显示,我猜是因为请求永远无法发回数据

app.get('/outer', (res, req) => {
    let url = 'https://samplejson.json';
    https.get(url, (response) => {
      response.on('data', (data) => {
        let parsed = JSON.parse(data);
        let collected = [];
        parsed.forEach((myId) => {


                let innerUrl = `https://samplejson/${innerId}.json`;
                https.get(innerUrl, (innerResponse) => {
                    innerResponse.on('data', (innerData) => {
                        let parsedInner = JSON.parse(innerData);
                        //console.log(JSON.stringify(parsedInner,null,2));
                        let collect = parsedInner.title.trim().split(' ');
                        collect.forEach((w) => {
                            //console.log(w); // works
                            collected.push(w);
                        });
                    }, (err) => res.status(400).send(err));
                 } , (err) => res.status(400).send(err));


        }, (err) => res.status(400).send(err));
        console.log('ending'); // never shown ?
        console.log(collected); // never shown ?
      });
  }, (err) => res.status(400).send(err));
}, (err) => {
    res.status(400).send(err);
});
那么,分解我的代码并以正确的方式进行操作的最佳方法是什么?
感谢您上面发布的代码在
parsed.forEach()
中启动多个异步请求,但console会在请求完成之前记录阵列。因此,没有数据可显示。我在下面发布了一个建议修复

通过使用该库,代码变得更具可读性