私はnode.js(およびrequest.js)が初めてです。異なるパスを持つ特定の URL から Web サイトの本文を取得したいと思います (以下の例では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);
たが、うまくいきませんでしたというエラーが表示されます。
ご協力いただきありがとうございます!