Вы ищете термин частичное применение .Сделайте общую функцию управления следующим образом:
function handle(x, y, evalFn, err, A) {
State[x][y] = A;
evalFn(state[x]);
}
Вам нужна функция высшего порядка , которая принимает функцию , фиксированные значения для some аргументов и возвращает новую функцию , принимающую «остальные аргументы», которая вызывает исходную функцию с фиксированными аргументами и заданными аргументами.
Такой методназывается частичное применение .Вы можете написать эту функцию самостоятельно (используя стандартный синтаксис ES6, доступный в современных версиях Node):
function partial(fn, ...fixedArgs) {
return (...args) => fn(...fixedArgs, ...args)
}
Это также доступно в Lodash , так как это очень распространенный шаблон проектирования.
Затем вы можете назначить обработчики как
Input0.watch(partial(handle, 0, 1, Eval0));
Поскольку partial(handle, 0, 1, Eval0)
сама является функцией, чьи первые два аргумента станут err
и A
в обработчике.