Подтвердить что ты не робот

Передайте дополнительный аргумент функции обратного вызова

У меня есть функция callWithMagic, которая принимает функцию обратного вызова в качестве параметра и вызывает ее с одним аргументом.

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

У меня также есть функция processMagic, которая принимает два аргумента: magic и theAnswer.

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

Я хочу передать функцию processMagic как аргумент callWithMagic, но также хочу передать 42 в качестве второго параметра (theAnswer) на processMagic. Как я могу это сделать?

callWithMagic(<what should I put here?>);
4b9b3361

Ответ 1

Просто создайте обратный вызов обертки:

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

Или используя ECMAScript 6 функции стрелок:

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

Ответ 2

Вы можете использовать функцию анонимного

что-то вроде

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

Ответ 3

Вы можете создать функцию, которая вызывает функцию marketEvent. Не нужно усложнять вещи.

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

в противном случае вы можете сделать это:

var mrktEvent = function(customArgs) {
    return function(args, kwargs) { 
        marketEvent(args, kwargs, customArgs) 
    };
}

session.sub('Hello', mrktEvent("customEvent"));