これが私のコードです
function save_current_side(current_side) {
var result;
var final = a.b({
callback: function (a) {
console.log(a); // its working fine here
return a;
}
});
}
ここで、bは同期関数です。上記の関数をコードのどこかで呼び出しています
var saved = save_current_side(current_side);
保存された変数は未定義です。コールバック関数によって返される値を取得する方法
b
が同期メソッドの場合、値を変数に格納するだけで、コールバック関数からではなくsave_current_side
関数から値を返すことができます。
function save_current_side(current_side) {
var result;
a.b({
callback: function (a) {
result = a;
}
});
return result;
}
b
が非同期メソッドの場合、関数を終了した時点ではまだ存在しないため、関数から値を返すことはできません。コールバックを使用します。
function save_current_side(current_side, callback) {
a.b({
callback: function (a) {
callback(a);
}
});
}
save_current_side(current_side, function(a){
console.log(a);
});
コールバック関数を送信する必要があります。例:
function save_current_side(current_side, callback) {
a.b({
callback: callback
});
}
save_current_side(current_side, function() {
console.log('saved'):
});
以下に示すように、関数の引数としてコールバックを渡すだけです
function save_current_side(current_side,callback) {
var result;
var final = a.b(function(){
callback(a);
});
}
これは、コードの任意の場所で呼び出すことができる方法です
var saved;
save_current_side(current_side,function(saved){
console.log(saved);
});