Ik denk dat je verkeerd begrijpt hoe async.series werkt.
Uw functies in async.series neem geen callback aan als een argument en ze noemen het niet. En dat request(...) spul is waarschijnlijk helemaal geen functie. Dat is waarschijnlijk de reden waarom het de asynchrone lus verbreekt. Probeer dit:
async.series(
[
function(callback) { // <--- missing callback
log('starting');
db.connect('mongodb://127.0.0.1:27017/test',
function(err, base){
if(err) throw err;
db = base;
callback(); // <--- missing callback
});
},
function(callback) { // <--- missing function with callback
request(website, function(err,resp,body) {
start(err, resp, body, callback);
})
}
],
function(){
log('closing DB');
db.close();
}
);
Merk op dat ik callback heb toegevoegd argument bij het aanroepen van start . U zult uw code dus grondig moeten herstructureren, zodat elke functie callback accepteert die aan het einde kan worden opgeroepen als u weet dat alle taken zijn voltooid. U kunt bijvoorbeeld async.parallel . toevoegen binnen start en deze functie kan er als volgt uitzien:
function start(err, resp, body, callback) {
// some stuff happens here
var jobs = []
pageURLS.forEach(function(url, index, array){
jobs.push(function(clb) {
request(url, function(error,response,bodies) {
// some stuff
clb(); // <--- this refers to the local callback for the job
});
});
});
async.parallel(jobs, function() {
// all jobs are done, let's finilize everything
callback();
});
};