这是我的代码
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);
保存的变量未定义。如何通过回调函数返回值
答案 0 :(得分:24)
如果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);
});
答案 1 :(得分:3)
您需要提交回调函数。例如:
function save_current_side(current_side, callback) {
a.b({
callback: callback
});
}
save_current_side(current_side, function() {
console.log('saved'):
});
答案 2 :(得分:3)
您只需将回调作为参数传递给函数,如下所示
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);
});