javascript - Lawnchair javascript 数据 "get"不允许我分配给另一个变量

标签 javascript mobile scope global-variables lawnchair

我正在使用 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”回调函数中设置任何变量。我错过了什么吗?

如有任何帮助,我们将不胜感激。

谢谢。

最佳答案

数据库操作是异步的。将您的警报放入“.get()”函数的回调内部

作为一般规则,任何时候您看到这样的 JavaScript API:

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

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

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

关于javascript - Lawnchair javascript 数据 "get"不允许我分配给另一个变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9278766/

相关文章:

c++ - 同步 : Why wont this display my Layout

audio - .Ogg 与 .mp3 用于移动应用程序?

iphone - 限制图像加载到网站的移动版本

javascript - HTML 模式弹出窗口可能会通过在后台形成字段而失去焦点

javascript - 在 Rails 表单中如何使用 Jquery 隐藏和取消隐藏表单元素?我的脚本无法运行

c# - 混合模式调试

c++ - 在 C++ 中传递对象会出现 'invalid use of non-static member' 错误

c++ - 在循环范围内填充 C++ 映射内容

javascript - 有什么方法可以用 grunt-contrib-jasmine 输出 spec runner?

javascript - DynamoDB batchWriteItem 在 node.js 中崩溃