【发布时间】:2023-03-06 05:35:01
【问题描述】:
我正在为 Node.js 中的异步事件而苦苦挣扎。
我的应用正在执行第一个 HTTP GET 请求,然后根据在响应正文中找到的一些信息,它循环了一定次数。
在每次迭代时,它都会调用一个函数,该函数发送其他 HTTP GET 请求并返回一个推入到元素数组中的结果。
我的问题是,当所有 http 请求都完成后,我想 console.log() 元素数组。这是我的代码:
http.get('mysite.com', function(res) {
var body = '';
res.on('data', function(chunk) {
body += chunk;
});
res.on('end', function() {
var last = 5,
elements = [];
for(var i=0; i < last; i++) {
elements.push(myRequest(i));
}
console.log(elements);
// Do some stuff with the elements array after it has been populated
});
}).on('error', function(error) {
console.log(error);
});
var myRequest = function(i) {
http.get('mysite.com/page' + i, function(res) {
var body = '';
res.on('data', function(chunk) {
body += chunk;
});
res.on('end', function() {
// Do parsing here
return parsed;
});
}).on('error', function(error) {
console.log(error);
});
};
我考虑过使用异步模块,但我不确定如何在这个用例中使用它。
提前致谢!
【问题讨论】:
-
根据定义,http get 是异步的。没有真正看到你想做什么。
-
我只想在所有http请求完成后对它们的结果做点什么。
标签: node.js asynchronous