2017-09-23 73 views
1

我想回调函数的结果。函数的回调结果

我试过如下:

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回功能?

感谢您的回复!

回答

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