UNPKG

asyncyo

Version:

Common function and templates for asynchronous code

72 lines (55 loc) 1.73 kB
var Async = function () { var self = this; this.map = function (array, func, callback){ // array => images // func => downloadImage // callback => Function anonyme var count = array.lenght; var errors = []; var results = []; for (var i = 0; i< array.length; i++) { (function(i){ func(array[i], function(error, result) { count --; if (error) errors[i] = error; // stock error else results[i] = result; // stock result if (count < 1) return callback((errors.lenght > 0) ? errors : null, results); }); })(i); } }; this.Waterfall = function () { // function(jobs, callback) //precedente fonction sans resultat: // [0] jobs // [1] callback //precedente fonction avec resultat: // [0] jobs // [1] result // de la precédente fonction // [2] callback var jobs = arguments[0]; var callback = (arguments.length > 2 ) ? arguments[2] : arguments[1]; var job = jobs.shift(); var after = function (error, result) { if (error) return callback(error); if (jobs.length < 1) return callback(null, result); var args = []; args.push(jobs); if (result != undefined) args.push(result); args.push(function (error, result) { if (error) return callback(error); else return callback(null, result); }); self.Waterfall.apply(this, args); }; // sans précédent résultat // [0] callback // avec précédent résultat // [] result // de la précédente fonction // [0] callback var arg = []; if (arguments.length > 2) args.push(arguments[1]); args.push(after); job.apply(this, args); }; }; module.exports = new Async();