nodejsアプリに複数のHTTPリクエストがあり、それぞれが文の単語を返します。返信が来るタイミングがバラバラなので、元の文の単語索引をキーにして辞書に保存しています。問題は、リクエスト オブジェクトにアクセスすると、最後のオブジェクトしか取得できないことです。
var completed_requests = 0;
sentence = req.query.sentence;
sentence = "sentence to be translated"
responses=[];
words = sentence.split(" ");
for(j=0;j<words.length;j++){
var word = words[j];
var data={
word:word
};
var options = {
url: 'example.com',
form:data,
index:j
};
request.post(options, function(err,httpResponse,body){
options = options;
if(!err){
responses.push({options.index: body});
completed_requests+=1;
if(completed_requests==words.length){
var a="";
for(var k=0;k<words.length;k++){
a+=responses[k]+" ";
}
res.render('pages/index', { something: a });
}
}
else{
//err
}
});
}
基本的に、object.index
オブジェクトにアクセスすると、返されるオブジェクトは元のリクエストに使用されたものではなく、最後のものです (何らかの理由で)。これをどのように解決すればよいですか?