How to get returned a value by a callback function

2019-01-22 22:33发布

Here is my code

function save_current_side(current_side) {
    var result;
    var final = a.b({
        callback: function (a) {
            console.log(a); // its working fine here 
            return a;
        }
    });
}

where b is the synchronous function. I am calling the above function anywhere in the code

var saved =  save_current_side(current_side);

The variable saved is undefined. How to get returned valued by callback function

3条回答
倾城 Initia
2楼-- · 2019-01-22 22:50

You need to submit the callback function. Example:

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

save_current_side(current_side, function() {
  console.log('saved'):
});
查看更多
闹够了就滚
3楼-- · 2019-01-22 22:59

If b is a synchronoys method, you simply store the value in a variable, so that you can return it from the save_current_side function instead of from the callback function:

function save_current_side(current_side) {
  var result;
  a.b({
    callback: function (a) {
      result = a;
    }
  });
  return result;
}

If b is an asynchronous method, you can't return the value from the function, as it doesn't exist yet when you exit the function. Use a callback:

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

save_current_side(current_side, function(a){
  console.log(a);
});
查看更多
狗以群分
4楼-- · 2019-01-22 23:02

You just have to pass the callback as argument in the function as given below

function save_current_side(current_side,callback) {
   var result;
   var final = a.b(function(){
      callback(a);
   });
}

This is how you can call it anywhere in the code

var saved;
save_current_side(current_side,function(saved){
     console.log(saved);
});
查看更多
登录 后发表回答