以下是Node.js腳本。它下載包含在div中的圖像。該循環工作正常9.86%即id = 36.當id> 36它退出循環。我正在使用節點0.12版本。在完成之前,循環需要運行365次次。我正在使用遞歸回調的方法。Node.js遞歸循環失敗
代碼:
//Required modules
var fs = require('fs'),
cheerio = require('cheerio'),
request = require('request');
//Default Variables
var baseURI = 'http://www.website/';
var year = 2013;
var id = 1;
var savePath = process.argv[2];
//Download Function
var download = function(uri, filename, callback){
request({ uri: uri }, function(err, res, body){
var $ = cheerio.load(body);
var imgDiv = $('#img-wallpaper').children()['0'];
if(err)
console.err(err);
if(typeof imgDiv !== 'undefined') {
request(imgDiv.attribs.src).pipe(fs.createWriteStream(filename)).on('close', callback);}
});
};
//Main Function
console.log("Downloading . . .");
// Loop function to create a recursive effect
(function loop(){
download(baseURI+year+'/'+id+'/wallpaper/', savePath+id+'.jpg',
function(){
console.log(((id/365)*100).toFixed(2)+'% completed');
if(id == 330)
year = "2014";
if(((id/365)*100) != 100){
id=id+1;
loop();}
});
})(1)
爲什麼在循環之間沒有依賴關係時遞歸?爲什麼不派遣所有的下載電話並收集結果? – martypdx
圖像寫入將是'部分'。 callstack緩衝區被填滿導致socked掛斷錯誤! – kingspp