我是 node.js(和 request.js)的新手。我想从具有不同路径的特定 url 中获取网站的正文(在下面的示例中http://www.example.com/path1、http://www.example.com/path2等。 ) 并将此数据记录在具有键/值映射的对象中(下面的 siteData[path])。
var request = require('request'),
paths = ['path1','path2','path3'],
siteData = {},
pathLength = paths.length,
pathIndex = 0;
paths.forEach((path) => {
var url="http://www.example.com/"+path;
request(url, function(error, response, html){
if(!error){
siteData[path] = response.body;
pathIndex++;
if(pathIndex===pathLength){
someFunction(siteData);
}
}
});
function someFunction(data){
//manipulate data
}
我的问题是:
- if 语句 (index === length) 看起来不是确定异步请求是否完成的正确方法。我应该如何正确检查请求是否已完成?
- 当我执行上面的代码时,我得到一个错误
(node) warning: possible EventEmitter memory leak detected. 11 unpipe listeners added. Use emitter.setMaxListeners() to increase limit.
,我尝试链接request(url, function(...){}).setMaxListeners(100);
,但没有奏效。
谢谢你的帮助!