node.js には、再フォーマットしてデータベースに書き込みたい読み取りストリームがあります。読み取りストリームが高速で書き込みが遅いため、書き込みのキューが蓄積されると、node.js キューが圧倒される可能性があります (ストリームが GB のデータであると仮定します)。ブロックせずにこれが起こらないように、コードの書き込み部分を強制的に待機させるにはどうすればよいですか?
var request = http.get({
host: 'api.geonames.org',
port: 80,
path: '/children?' + qs.stringify({
geonameId: geonameId,
username: "demo"
})
}).on('response', function(response) {
response.setEncoding('utf8');
var xml = new XmlStream(response, 'utf8');
xml.on('endElement: geoname ', function(input) {
console.log('geoname');
var output = new Object();
output.Name = input.name;
output.lat = input.lat;
output.lng = input.lng;
output._key = input.geonameId;
data.db.document.create(output, data.doc, function(callback){
//this is really slow.
}
// i do not want to return from here and receive more data until the 'create' above has completed
});
});