我正在尝试将结果回调给函数。
我尝试了以下内容:
function multiply(x,y, callback) {
let res = x * y
callback(res)
}
function hardOperation(a,b) {
let res = a + b + multiply(a,b)
console.log("The result is " + res)
}
hardOperation(2,2)
然而,我得到了:
TypeError: callback is not a function
我是否需要定义全局变量,还是可以将res
传递回函数?
感谢您的回复!
答案 0 :(得分:3)
您需要定义一个将检索回调值的函数。
function multiply(x,y, callback) {
let res = x * y
callback(res)
}
function hardOperation(a,b) {
multiply(a, b, function(res){
res = a + b + res
console.log("The result is " + res);
})
}
hardOperation(2,2)
答案 1 :(得分:2)
callback
确实不是一个函数,因为你没有定义它。您正在调用的函数需要三个参数:
function multiply(x,y, callback) {
你只给它两个:
multiply(a,b)
所以第三个参数是undefined
。您还希望它返回一个值,但multiply
函数中没有任何地方返回任何内容。因此返回值也为undefined
。
multiply()
函数试图演示使用回调函数代替返回值。例如,这是异步代码的常见模式。因此,不是依赖于返回值,而是为其提供一个函数来对结果执行操作。像这样:
function hardOperation(a,b) {
multiply(a,b, function (res) {
res = a + b + res;
console.log("The result is " + res);
});
}