Passar um argumento extra para uma function de retorno de chamada

Eu tenho uma function callWithMagic que tem uma function de retorno de chamada como um parâmetro e chama com um argumento.

 const callWithMagic = callback => { const magic = getMagic(); callback(magic); }; 

Eu também tenho uma function processMagic que leva dois argumentos: magic e theAnswer .

 const processMagic = (magic, theAnswer) => { someOtherMagic(); }; 

Eu quero passar a function processMagic como um argumento para callWithMagic , mas também quero passar 42 como o segundo parâmetro ( theAnswer ) para processMagic . Como eu posso fazer isso?

 callWithMagic(); 

Basta criar um retorno de chamada do wrapper:

 callWithMagic(function(magic) { return processMagic(magic, 42); }); 

Ou usando as funções de seta do ECMAScript 6:

 callWithMagic(magic => processMagic(magic, 42)); 

Você poderia usar uma function anonymus

algo como

 session.sub('Hello', function(){marketEvents(your args);}); 

Você pode criar uma function que chama a function marketEvent . Não há necessidade de complicar as coisas

 session.sub('Hello', function(args, kwargs) { marketEvent(args, kwargs, 'my custom data'); }); 

Caso contrário, você pode fazer isso:

 var mrktEvent = function(customArgs) { return function(args, kwargs) { marketEvent(args, kwargs, customArgs) }; } session.sub('Hello', mrktEvent("customEvent")); 

Você pode ligar o object de argumento à function de retorno de chamada:

 var varObject = {var1: "findButton", var2: true}; function cbFunc() { console.log(this.var1+ ":" + this.var2); } //Example callback datatable.ajax.reload(cbFunc.bind(varObject));