Exécuter des fonctions JavaScript par lot

Concept et utilisation

La fonction Batch() permet d'exécuter une pile de traitement d'un lot de fonctions asynchrones.

Constructeur

Batch()

Retourne un objet pile de traitement dans laquelle ajouter les fonctions à traiter par lot.

Syntaxe
new Batch();
Paramètre

Aucun.

Méthode de l'instance
pile.push()

La méthode push() de la fonction Batch() permet d'ajouter des fonctions dans la pile de traitement.

Syntaxe
pile.push(fonctions);
Paramètre
fonctions(Functions, Array)

Le paramètre fonctions de la méthode push() définit les fonctions à ajouter dans la pile de traitement, passées directement en arguments de la méthode ou via un tableau "Array".

Exemple de traitement par lot de fonctions

var compteur = 0;

var fonction = function(next) {
  setTimeout(function() {
    compteur++;
    console.log(compteur + ' seconde(s)');
    next();
  }, 1000);
};

var pile = new Batch();

pile
  .push(fonction, fonction)
  .push([fonction, fonction]);

// renvoie : 
// '1 seconde(s)'
// '2 seconde(s)'
// '3 seconde(s)'
// '4 seconde(s)'

Code source de la fonction

function Batch(){"use strict";var t=this,b=[],f=function(){
if(b.length>0){b[0](function(){b.shift();f();});}};
Object.defineProperty(t,'push',{__proto_:null,value:
function(v){var o=v&&Array.isArray(v)?v:arguments,
c=(b.length===0),p=function(a){if(typeof a==='function'){
b.push(a);}};for(var i=0,j=o.length;i<j;i++){var a=o[i],
l=a.length&&a.length>1?a.length:0;if(l>1){
for(var k=0,l=a.length;k<l;k++){p(a);}}else{p(a);}}if(c){
f();}return t;}});return t;}
^