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

Javascript 将额外参数传递给回调函数,javascript,function,parameters,callback,Javascript,Function,Parameters,Callback,我有一个函数callWithMagic,它将回调函数作为参数,并用一个参数调用它 const callWithMagic = callback => { const magic = getMagic(); callback(magic); }; 我还有一个函数processMagic,它接受两个参数:magic和theAnswer const processMagic = (magic, theAnswer) => { someOtherMagic(); }; 我想将

我有一个函数
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?>);
callWithMagic();

只需创建一个包装回调:

callWithMagic(function(magic) {
  return processMagic(magic, 42);
});
或者使用ECMAScript 6:


你可以使用匿名函数

差不多

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

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

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

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

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

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

谢谢,这是“工作”!但这只是第一次叫marketEvent。Next调用返回newArg值的undefined,但不返回其他两个值的undefined。@Kulin每次都应该这样做。当你把它标记为答案时,它是否起作用了?这篇文章正在Meta上讨论-(参见对问题的评论)。同时通知提问者@Kulin。如果你想看到一个更全面的答案,请看这个问题和答案,它比提问者的答案早两年:这是迄今为止最好的答案,谢谢!也可以与function()上的参数一起使用,例如session.sub('Hello',function(orgArg){marketEvents(orgArg,your_args);});
var varObject = {var1: "findButton", var2: true};

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

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