我有一个函数声明如下。如何将函数/匿名函数中的值返回给父元素。
以下是我正在努力解决的代码
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');
答案 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);
});