有没有办法在回调函数中返回一个值?

时间:2015-10-30 08:02:26

标签: javascript

我有这样的功能:

var api = {
    getProduct : function(callback){
          //code anything
          //resp data 
          if(typeof callback == "function") callback(resp);
     }
}

无论如何使用

var data = api.getProduct(function(resp){
  return resp;
});
console.log(data);

我需要在回调之外做一些事情

1 个答案:

答案 0 :(得分:-1)

我认为您正在使用网络/ AJAX, 所以请注意这个:

  

这是不可能的,因为你不能在一个内部使用异步调用   同步方法。

     

在这种情况下,您需要将回调传递给将接收foo的foo   返回值

https://stackoverflow.com/a/6847754/3119231

对于 downvoters 来说更重要的是:

  

从回调中返回值是没有意义的。相反,做   " FOO()"你想在回调中做的工作。

     

异步回调由浏览器或某些框架调用   就像事件发生时的Google地理编码库一样。没有地方   返回值。

https://stackoverflow.com/a/6847714/3119231

var api = {
    getProduct: function(callback){
        if (callback){
            resp = "jo"; //there must be a valid response data
            callback(resp);
        }
     }
}

强烈推荐:

var data = "nope";
api.getProduct(function(e){
    //some functions or stuff you like to do with your variable
    console.log("inner variable: " + e);
    data = e;
})

console.log("outer variable: " + data);

http://jsfiddle.net/j8srmyv6/1/