javascript valor Pasar un argumento adicional a una función de devolución de llamada




retornar valor de una funcion javascript (4)

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"));

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?>);

Podría usar una función anónima

algo como

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

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));

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));




callback