web-dev-qa-db-ja.com

コールバック関数に追加の引数を渡します

パラメータとしてコールバック関数を受け取り、1つの引数で呼び出す関数callWithMagicがあります。

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

また、processMagicmagicの2つの引数を取る関数theAnswerもあります。

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

関数processMagicを引数としてcallWithMagicに渡したいのですが、42theAnswerへの2番目のパラメーター(processMagic)として。どうやってやるの?

callWithMagic(<what should I put here?>);
35
Kulin

ラッパーコールバックを作成するだけです。

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

または、ECMAScript 6 矢印関数 を使用して:

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

無名関数を使用できます

何かのようなもの

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

引数オブジェクトをコールバック関数にバインドできます。

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

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

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

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"));
1
TryingToImprove