如果我使用这段代码:
async.eachLimit(body.photos.photo, 10, function(photo) {
var flickr_getphoto_path = ".....";
request.get({url: flickr_host_url + flickr_getphoto_path, json: true}, function(error, response, body) {
if (!error && response.statusCode == 200) {
console.log("SIZES LENGTH: " + body.sizes.size.length);
var source_url = body.sizes.size[body.sizes.size.length - 1].source;
request(source_url).pipe(fs.createWriteStream(path_for_downloads + path.basename(source_url)));
}
});
}
处理在 10 个请求后停止(即第一个周期后)。
应该有10个周期。
有人知道为什么它不能正常工作吗?
您设置的异步函数错误。第三个参数(迭代器函数)采用两个参数:正在迭代的项目,以及告诉 async 已完成的回调。您缺少(因此从未调用)回调,因此异步不知道是时候执行下一批了。
var async = require('async');
async.eachLimit(body.photos.photo, 10, cacheOnePhoto, function(err){
if(err){
console.log(err);
} else {
console.log('Processing complete');
};
})
function cacheOnePhoto(photo, done){
var flickr_getphoto_path = ".....";
request.get({
url: flickr_host_url + flickr_getphoto_path,
json: true
}, function(error, response, body) {
if (!error && response.statusCode == 200) {
console.log("SIZES LENGTH: " + body.sizes.size.length);
var source_url = body.sizes.size[body.sizes.size.length - 1].source;
request(source_url).pipe(
fs.createWriteStream(path_for_downloads + path.basename(source_url))
);
done(null);
} else {
done('Request error for '+flickr_getphoto_path);
}
});
};
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)