Похоже асинхронной функции. Вся суть асинхронного программирования заключается в том, что вы не возвращаете значения. Вы подписываетесь на обратные вызовы, в которых вы используете результаты. Потому что, если вы возвращаете значения, это означает, что вызывающей стороне вашей функции придется ждать, пока это значение не будет доступно. И ждать плохо, потому что вы будете замораживать этого звонящего.
Так одна возможность заключается в том, чтобы обеспечить вашу родительскую функцию с параметром обратного вызова, который позволил бы потребитель этой функции, чтобы получить результаты асинхронной операции:
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);
});