将额外参数传递给回调函数

时间:2016-11-25 09:53:02

标签: javascript function parameters callback

我有一个函数callWithMagic,它将一个回调函数作为参数,并用一个参数调用它。

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

我还有一个函数processMagic,它有两个参数:magictheAnswer

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

我想将函数processMagic作为参数传递给callWithMagic,但我也希望将42作为第二个参数(theAnswer)传递给{{1 }}。我怎么能这样做?

processMagic

4 个答案:

答案 0 :(得分:41)

只需创建一个包装回调:

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

或使用ECMAScript 6 arrow functions

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

答案 1 :(得分:3)

您可以使用匿名函数

类似

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

答案 2 :(得分:1)

您可以创建一个调用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"));

答案 3 :(得分:1)

您可以将参数对象绑定到回调函数:

var varObject = {var1: "findButton", var2: true};

function cbFunc() {
    console.log(this.var1+ ":" + this.var2);
}

//Example callback
datatable.ajax.reload(cbFunc.bind(varObject));