14

これが私のコードです

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

保存された変数は未定義です。コールバック関数によって戻り値を取得する方法

4

3 に答える 3

27

が同期メソッドの場合、値を変数に格納するだけで、コールバック関数からではなく関数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);
});
于 2013-01-06T13:57:40.680 に答える
4

以下に示すように、関数の引数としてコールバックを渡す必要があります

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);
});
于 2015-01-27T21:31:12.317 に答える
3

コールバック関数を送信する必要があります。例:

function save_current_side(current_side, callback) {        
    a.b({
        callback: callback
    });
}

save_current_side(current_side, function() {
  console.log('saved'):
});
于 2013-01-06T13:56:16.813 に答える