javascript - retornar - Pasar un argumento adicional a una función de devolución de llamada
pasar variables entre funciones javascript (4)
Podría usar una función anónima
algo como
session.sub(''Hello'', function(){marketEvents(your args);});
Tengo una función callWithMagic
que toma una función de devolución de llamada como parámetro y la llama con un argumento.
const callWithMagic = callback => {
const magic = getMagic();
callback(magic);
};
También tengo una función processMagic
que toma dos argumentos: magic
y theAnswer
.
const processMagic = (magic, theAnswer) => {
someOtherMagic();
};
Quiero pasar la función processMagic
como argumento para callWithMagic
, pero también quiero pasar 42
como el segundo parámetro ( theAnswer
) para processMagic
. ¿Cómo puedo hacer eso?
callWithMagic(<what should I put here?>);
Puede crear una función que llame a la función marketEvent
. No hay necesidad de complicar las cosas
session.sub(''Hello'', function(args, kwargs) {
marketEvent(args, kwargs, ''my custom data'');
});
de lo contrario, puedes hacer esto:
var mrktEvent = function(customArgs) {
return function(args, kwargs) {
marketEvent(args, kwargs, customArgs)
};
}
session.sub(''Hello'', mrktEvent("customEvent"));
Puede vincular el objeto de argumento a la función de devolución de llamada:
var varObject = {var1: "findButton", var2: true};
function cbFunc() {
console.log(this.var1+ ":" + this.var2);
}
//Example callback
datatable.ajax.reload(cbFunc.bind(varObject));
Simplemente crea una devolución de llamada envoltura:
callWithMagic(function(magic) {
return processMagic(magic, 42);
});
O usando las funciones de flecha de ECMAScript 6:
callWithMagic(magic => processMagic(magic, 42));