Passer un argument supplémentaire à une fonction de rappel
J'ai une fonction callWithMagic
qui prend une fonction de rappel comme paramètre et l'appelle avec un argument.
const callWithMagic = callback => {
const magic = getMagic();
callback(magic);
};
J'ai aussi une fonction de processMagic
qui prend deux arguments: magic
et theAnswer
.
const processMagic = (magic, theAnswer) => {
someOtherMagic();
};
J'ai envie de passer à la fonction processMagic
comme un argument de callWithMagic
, mais je veux aussi passer 42
comme deuxième paramètre (theAnswer
) de processMagic
. Comment puis-je le faire?
callWithMagic(<what should I put here?>);
28
demandé sur
Michał Perłakowski
2016-11-25 12:53:02
4 réponses
Créez simplement un rappel wrapper:
callWithMagic(function(magic) {
return processMagic(magic, 42);
});
Ou en utilisant ECMAScript 6 Flèche fonctions :
callWithMagic(magic => processMagic(magic, 42));
32
répondu
str
2016-11-25 16:31:05
Vous pouvez utiliser une fonction anonymus
Quelque Chose comme
session.sub('Hello', function(){marketEvents(your args);});
1
répondu
Dropye
2016-11-25 09:56:17
Vous pouvez créer une fonction qui appelle la fonction marketEvent
. Pas besoin de compliquer les choses
session.sub('Hello', function(args, kwargs) {
marketEvent(args, kwargs, 'my custom data');
});
Sinon vous pouvez faire ceci:
var mrktEvent = function(customArgs) {
return function(args, kwargs) {
marketEvent(args, kwargs, customArgs)
};
}
session.sub('Hello', mrktEvent("customEvent"));
1
répondu
TryingToImprove
2016-11-25 09:59:12
Vous pouvez lier l'objet argument à la fonction de rappel:
var varObject = {var1: "findButton", var2: true};
function cbFunc() {
console.log(this.var1+ ":" + this.var2);
}
//Example callback
datatable.ajax.reload(cbFunc.bind(varObject));
0
répondu
aecavac
2018-05-25 08:25:15