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 fonctionBatch()permet d'ajouter des fonctions dans la pile de traitement.- Syntaxe
pile.push(fonctions);- Paramètre
fonctions(Functions, Array)Le paramètre
fonctionsde la méthodepush()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;}Dernière mise à jour le .
