传递一个已经设置了一些参数的回调函数

时间:2017-04-28 11:37:43

标签: javascript callback

我正在尝试将参数预加载到回调函数中。这是我尝试过的一个精简的例子。

function doSomething(callback) {
  // code to obtain a 3rd argument, eg API call or access a file.
  // let's say we are getting the number 5.
  const c = 5;
  // invoke the callback with its final argument.
  callback(c);
}

function toBeCalled(arg1, arg2, arg3) {
  // do a calculation with these arguments.
  console.log((arg1 * arg3) + arg2);
}

// invoke doSomething with the first two arguments already defined.
// eg user input.
doSomething(toBeCalled(a, b));

我想要发生的事情:

doSomething(toBeCalled(4, 2));

console: 22

当我调用doSomething时,我给回调它的前两个参数。 doSomething从某处获取第三个参数的值,并调用添加了第3个值的回调。

实际发生的事情:

据我所知,上面的代码会过早地调用toBeCalled,导致错误:

TypeError: callback is not a function

感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

将其包装在另一个函数中:

f = function (c) {
        toBeCalled(4, 2, c)
    } 

然后传递f作为回调以接收最终参数:

doSomething(f)