330 votes

JavaScript : Passage de paramètres à une fonction de rappel

Je suis en train de passer un paramètre à une fonction à utiliser comme rappel, comment puis-je faire cela ?

291voto

Simon Scarfe Points 2831

Si vous voulez quelque chose d’un peu plus général, vous pouvez utiliser comme arguments variable ainsi :

Mais sinon, ton exemple fonctionne très bien (arguments [0] peuvent être utilisés à la place de rappel dans le testeur)

219voto

Marimuthu Madasamy Points 5617

Cela fonctionnerait également :

75voto

Andy E Points 132925

Votre question n'est pas claire. Si vous vous demandez comment vous pouvez le faire d'une manière simple, vous devriez jeter un oeil à la ECMAScript 5ème édition de la méthode .bind(), qui est un membre de la Fonction.le prototype. En l'utilisant, vous pouvez faire quelque chose comme ceci:

function tryMe (param1, param2) {
    alert (param1 + " and " + param2);
}

function callbackTester (callback) {
    callback();
}

callbackTester(tryMe.bind(null, "hello", "goodbye"));

Vous pouvez également utiliser le code suivant, qui ajoute de la méthode, si elle n'est pas disponible dans le courant du navigateur:

// From Prototype.js
if (!Function.prototype.bind) { // check if native implementation available
  Function.prototype.bind = function(){ 
    var fn = this, args = Array.prototype.slice.call(arguments),
        object = args.shift(); 
    return function(){ 
      return fn.apply(object, 
        args.concat(Array.prototype.slice.call(arguments))); 
    }; 
  };
}

Exemple

bind() - PrototypeJS Documentation

13voto

Blake Mills Points 167

Lorsque vous avez un rappel qui sera appelé par autre chose que votre code avec un certain nombre de paramètres et vous souhaitez passer dans paramètres supplémentaires, vous pouvez passer une fonction wrapper comme rappel et à l’intérieur du col de wrapper les param(s) supplémentaires.

5voto

Alan McCune Points 21

Enveloppez la ou les fonctions «enfant» passées avec / avec les arguments dans les wrappers de fonction pour empêcher leur évaluation lors de l'appel de la fonction «parent».

 function outcome(){
    return false;
}

function process(callbackSuccess, callbackFailure){
    if ( outcome() )
        callbackSuccess();
    else
        callbackFailure();
}

process(function(){alert("OKAY");},function(){alert("OOPS");})
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X