2013-01-06 164 views
5

这里是我的代码如何通过一个回调函数获得返回的值

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

保存变量的任何地方调用上面的函数是不确定的。如何通过回调函数获取返回值

+1

任何地方调用它什么是'b()'?它是一种异步方法吗? – Alexander

回答

18

如果b是synchronoys方法,只需存储在一个变量的值,这样就可以从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); 
}); 
+3

亲爱的Guffa 如何在回调后使用“save_current_side”值? –

+0

@KostantinosIbra:你不能,因为函数在回调之前返回。你可以从函数中返回任何你喜欢的东西,然后按照正常的方式使用它,但是在回调之前发生这种情况,那时你不能访问异步调用的结果。 – Guffa

3

您需要提交回调函数。例如:

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

save_current_side(current_side, function() { 
    console.log('saved'): 
}); 
1

你只需要通过回调作为函数参数下面给出

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); 
}); 
相关问题