私は今これを修正しました。コメントでアドバイスされたように、私はそのトリックを助けたのは非同期でした。
for(var i = 0; i < 900; i++) {
async.forEachOf(results_jsonObj[i], function(value, key, callback){
var image = {};
image.key = key;
image.value = value;
if(image.key == 'imageFile')
{
var filename = image.value.name;
var uri = image.value.url;
// console.log(filename, uri);
}
request.head(uri, function(err, res, body){
if (err){
console.log(err);
// console.log(item);
return;
}else {
// console.log(i,res.headers['content-type']); //to debug
var stream = request(uri);
stream.pipe(
fs.createWriteStream("images/"+filename)
.on('error', function(err){
callback(error, filename);
stream.read();
})
)
}
});
callback();
}, function(err){
if (err) {
console.log('one of the api failed, the whole thing will fail now');
}
});
}
あなたは、フロー制御のための本当に便利 –
おかげでドミトリーをasync.jsライブラリを使用することができます。私はドキュメンテーションを見ていきます。どんな約束が助けになるかについてのアドバイスはありますか? –
asyncは約束ではありません。私は、約束以上の非同期を好む。 – Alan