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 回答