回调结果到函数

时间:2017-09-23 12:39:35

标签: javascript

我正在尝试将结果回调给函数。

我尝试了以下内容:

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传递回函数?

感谢您的回复!

2 个答案:

答案 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);
    });
}