Ajoutant rappel pour fonctionner – toujours

Je me suis retrouvé en utilisant une manière étrange d'ajouter des fonctions de rappel à mes fonctions et je me demandais s'il y avait un moyen plus générique d'ajouter des rappels aux fonctions, le meilleur cas, j'aurais une situation dans laquelle toutes mes fonctions vérifient le dernier paramètre paramétrable Une fonction et, le cas échéant, l'utiliser comme rappel.

C'est ainsi que je l'ai fait dans le passé:

var myFunc = function( obj ) { if ( arguments.length > 0 ) { if ( _.util.typeofObj( arguments[arguments.length-1] ) === Function ) { var callback = arguments[arguments.length-1]; } } // some code ... if ( callback !== undefined ) { callback(); } }; var foo = myFunc( myObj, function(){ alert( 'Callback!' ); }); 

Aucune suggestion?

Vous pouvez, si vous voulez vraiment, étendre Function.prototype avec un prototype .cb. Quelque chose comme:

 Function.prototype.cb = function(cb){ var self = this; return function(){ self.callback = cb || function(){}; self.apply(self, arguments); } } 

Alors votre code serait compressé pour:

 var myFunc = function(obj){ // some code this.callback(); // callback will always be defined } 

Et l'appel changerait légèrement:

 myFunc.cb(function(){ // callback code })(myObj); 

Juste une idée. Vous pouvez faire la syntaxe à peu près tout ce que vous voulez.

Je préfère un paramètre formel:

 var myFunc = function(obj, callback) { ... } 

De cette façon, il est évident qu'il y a un rappel. Vous ne devez pas non plus faire l'affaire avec l'objet arguments ; Vous pouvez simplement vérifier si le callback est undefined , puis vérifiez s'il est du type approprié ( Function ).

Pas sûr de ce que vous essayez de faire ici, mais une façon d'ajouter un rappel qui semble plus simple:

 function( obj, callback ) { if(callback) { callback(); } }