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()
- Syntaxe
new Batch();
- Paramètre
Aucun.
- Méthode de l'instance
pile.push()
- Syntaxe
pile.push(fonctions);
- Paramètre
fonctions
(Functions, Array)Le paramètre
fonctions
de 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 .