按顺序组合node.js中多个GET请求的数据

按顺序组合node.js中多个GET请求的数据,node.js,asynchronous,get,groupme,Node.js,Asynchronous,Get,Groupme,我正在编写一个带有http模块的node.js应用程序,并尝试将来自多个GET请求的数据组合起来以生成结果。我检查了类似的问题,但它们都涉及到并行初始化请求的async.map。在我的例子中,我需要第一个GET请求的结果来获取下一个请求的URL,等等。下面是我正在处理的示例: // First GET request https.get('URL', (resp) => { let data = ''; resp.on('data', (chunk) => {

我正在编写一个带有http模块的node.js应用程序,并尝试将来自多个GET请求的数据组合起来以生成结果。我检查了类似的问题,但它们都涉及到并行初始化请求的
async.map
。在我的例子中,我需要第一个GET请求的结果来获取下一个请求的URL,等等。下面是我正在处理的示例:

// First GET request
https.get('URL', (resp) => {
    let data = '';
    resp.on('data', (chunk) => {
        data += chunk;
    });

    resp.on('end', () => {
        let parsedData = JSON.parse(data);
        let names = parsedData.name;
        let before_id = parsedData.messages[99].id;
    });
});
然后,我想将
名称
在\u id
之前传递给另一个GET请求,如下所示:

// Second GET request
https.get('URL&before_id=' + before_id, (resp) => {
    let data = '';
    resp.on('data', (chunk) => {
        data += chunk;
    });

    resp.on('end', () => {
        let parsedData = JSON.parse(data);
        names = //names from previous request + this parsedData.name
        let before_id = parsedData.messages[99].id;
    });
});

对于上下文:我使用的是GroupMeAPI,它一次只能检索100条消息。我想检索1000条消息,这是通过查找100条消息中最后一条消息的消息id并调用另一个GET请求,将该消息id作为URL中的参数传递来完成的。(这将在紧接指定id之前请求100条消息)。这样,我不仅需要将每个请求的id传递给下一个请求,而且还需要存储来自每批请求的数据,将它们组合起来,然后一起提供服务。我如何做到这一点?

将有比我将在回答中介绍的更好的方法来构造代码。但这是你想做的最简单的例子

要使用一个异步操作的结果来启动其他任务,必须将该任务嵌入异步操作的回调中

//首次获取请求
https.get('URL',(resp)=>{
让数据=“”;
在('数据',(块)=>{
数据+=块;
});
分别在('结束',()=>{
让parsedData=JSON.parse(数据);
让names=parsedData.name;
let before_id=parsedData.messages[99].id;
//第二次获取请求
https.get('URL&before\u id='+before\u id,(resp)=>{
让数据=“”;
在('数据',(块)=>{
数据+=块;
});
分别在('结束',()=>{
让parsedData=JSON.parse(数据);
names=//来自上一个请求的名称+此parsedData.name
let before_id=parsedData.messages[99].id;
});
});
});
});

您可以尝试声明一个全局变量,并在第一个get请求中对其进行更新,方法是添加该变量,然后在下一个get请求中使用该数据

let before_id=''
//首次获取请求
https.get('URL',(resp)=>{
在('数据',(块)=>{
数据+=块;
});
前_id+=parsedData.messages[99].id;
//做其他事情
});
//第二次获取请求
https.get('URL&before\u id='+before\u id,(resp)(=>{
//做事

})
我确信有更好/更简洁的方法可以做到这一点,但这种方法非常适合我的需要。谢谢