如何从回调函数返回值

时间:2013-06-23 14:00:08

标签: javascript function callback

我有一个函数声明如下。如何将函数/匿名函数中的值返回给父元素。

以下是我正在努力解决的代码

LB.getData = function(key) {
    if(!key) return;

    appAPI.db.async.get(key, function(value){
        data = (value === null) ? null : JSON.parse(value);
        return data
    });
};


var myData = LB.getData('user');

1 个答案:

答案 0 :(得分:7)

看起来像一个异步函数。异步编程的全部意义在于您不返回值。您订阅回调,这是您使用结果的地方。因为如果返回值,则意味着函数的调用者必须等到该值可用。等待是不好的,因为你会冻结这个来电者。

因此,有一种可能性是为您的父函数提供一个回调参数,该参数允许此函数的使用者获取异步操作的结果:

LB.getData = function(key, callback) {
    if(!key) return;

    appAPI.db.async.get(key, function(value) {
        var data = (value === null) ? null : JSON.parse(value);
        // invoke the callback and pass the results to it
        callback(data);
    });
};

然后在使用父项时简单地提供一个回调函数:

LB.getData('user', function(data) {
    // use the data here
    alert(data.someProperty);
});