2

我正在使用 Lawnchair 将数据保存在 js 中并将其检索回用于我的移动应用程序。

我的 js 文件中有这个。

$(document).ready(function() {

    //Lawchair set up
    db = Lawnchair({name: 'db'},function(e){
      console.log('storage open');
    });

    //store the 'username' key in storage
    db.save({key:"username", value: "john"});

    var name = ""
    db.get("username", function(obj){
            name = obj.value;
    })

    alert(name);

});

问题是我总是在名字中得到“”。我永远不能在 Lawnchair 对象的“get”回调函数中设置任何变量。我错过了什么吗?

任何帮助,将不胜感激。

谢谢。

4

1 回答 1

3

数据库操作是异步的。将警报放在“.get()”函数的回调中。

作为一般规则,每当您看到这样的 JavaScript API 时:

something(param, param, ... , function(result, result, ...) {
  // ...
});

很可能该函数可能是一种异步机制,并且您提供的回调函数只会在事件实际发生时才被调用。在这些情况下,您必须构建自己的代码,以便在操作完成后需要执行的活动在回调内的代码中完成。

(情况并非总是如此;例如,一些函数式编程 API 将函数作为参数。)

于 2012-02-14T14:57:33.660 回答