Pass an extra argument to a callback function
I have a function callWithMagic
which takes a callback function as a parameter and calls it with one argument.
const callWithMagic = callback => {
const magic = getMagic();
callback(magic);
};
I also have a function processMagic
which takes two arguments: magic
and theAnswer
.
const processMagic = (magic, theAnswer) => {
someOtherMagic();
};
I want to pass the function processMagic
as an argument to callWithMagic
, but I also want to pass 42
as the second parameter (theAnswer
) to processMagic
. How can I do that?
callWithMagic(<what should I put here?>);
Solution 1:
Just create a function(magic) {}
as a wrapper callback:
callWithMagic(function(magic) {
return processMagic(magic, 42);
});
Or using ECMAScript 6: arrow functions:
callWithMagic(magic => processMagic(magic, 42));
Solution 2:
You could use an anonymus function
something like
session.sub('Hello', function(){marketEvents(your args);});
Solution 3:
You can create a function which calls the marketEvent
function. No need to complicate things
session.sub('Hello', function(args, kwargs) {
marketEvent(args, kwargs, 'my custom data');
});
otherwise you can do this:
var mrktEvent = function(customArgs) {
return function(args, kwargs) {
marketEvent(args, kwargs, customArgs)
};
}
session.sub('Hello', mrktEvent("customEvent"));