2017-09-23 16 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は実際には定義されていないため、関数ではありません。あなたはそれを2つだけを与えている

function multiply(x,y, callback) { 

multiply(a,b) 

ので、3番目の引数がundefinedであるあなたが呼んでいる関数は三つの引数を期待します。値を返すことも期待していますが、multiply関数のどこにも何も返されません。戻り値はでもあり、undefinedになります。

multiply()関数が値を返すの代わりにコールバック関数の使用を立証しようとしています。これは、たとえば非同期コードの一般的なパターンです。したがって、戻り値に頼る代わりに、結果にアクションを実行する関数を提供してください。このようなもの:

function hardOperation(a,b) { 
    multiply(a,b, function (res) { 
     res = a + b + res; 
     console.log("The result is " + res); 
    }); 
} 
関連する問題