Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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?>); 
like image 423
Kulin Avatar asked Nov 25 '16 09:11

Kulin


People also ask

Can callback function have parameters?

In JavaScript, when we pass a function to another function as a parameter, it is called a callback function. The function takes another function as a parameter and calls it inside.

Which of the following argument is used to invoke callback function?

A callback function is a function passed into another function as an argument, which is then invoked inside the outer function to complete some kind of routine or action. The above example is a synchronous callback, as it is executed immediately.

Can you have multiple callbacks?

Callbacks can help you prevent overfitting, visualize training progress, debug your code, save checkpoints, generate logs, create a TensorBoard, etc. There are many callbacks readily available in TensorFlow, and you can use multiple.


2 Answers

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)); 
like image 62
str Avatar answered Sep 28 '22 06:09

str


You could use an anonymus function

something like

session.sub('Hello', function(){marketEvents(your args);}); 
like image 27
Dropye Avatar answered Sep 28 '22 05:09

Dropye