如何从回调函数返回值

pis*_*ipt 2 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');
Run Code Online (Sandbox Code Playgroud)

Dar*_*rov 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);
    });
};
Run Code Online (Sandbox Code Playgroud)

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

LB.getData('user', function(data) {
    // use the data here
    alert(data.someProperty);
});
Run Code Online (Sandbox Code Playgroud)