2017-09-23 94 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); 
    }); 
}