जब आपको किसी सरणी में आइटम के लिए समान एसिंक्रोनस कार्य करना होता है, तो लूप के लिए नियमित का उपयोग न करें। async.each
देखें , यह आपके परिदृश्य में बेहतर फिट बैठता है, जैसे (बस else
आपके कोड का हिस्सा):
var body = JSON.parse(response.body);
async.each(body.data, function (photoData, callback) {
// ------------------------------------------------
// If there is no caption, skip it
//
if (!photoData.caption){
text = '';
}
else{
text = photoData.caption;
}
// ------------------------------------------------
// Create new photo object
//
var photo = new Photo({
link: photoData.link,
username: photoData.user.username,
profilePicture: photoData.user.profile_picture,
imageThumbnail: photoData.images.thumbnail.url,
imageFullsize: photoData.images.standard_resolution.url,
caption: text,
userId: photoData.user.id,
date: photoData.created_time,
_id: photoData.id
});
photo.checkBlacklist(function(err, blacklist){
if (!blacklist){
photo.save(function(err, item){
if (err){
console.log(err);
}
console.log('Saved', item);
callback();
});
}
});
}, function (error) {
if (error) res.json(500, {error: error});
console.log('Photos saved');
return res.json(201, {msg: 'Photos updated'} );
});
इंस्टॉल करना न भूलें
npm install async
और async
. की आवश्यकता है :
var async = require('async');