Яваскрипт данных газона "получить" не позволяет мне назначить в другую переменную - PullRequest
2 голосов
/ 14 февраля 2012

Я использую 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);

});

Проблема в том, что я всегда получаю"" во имя.Я никогда не могу установить какую-либо переменную внутри функции обратного вызова "get" из объекта Lawnchair.Я что-то пропустил?

Любая помощь будет оценена.

Спасибо.

1 Ответ

3 голосов
/ 14 февраля 2012

Операция базы данных асинхронная. Поместите ваше предупреждение внутри обратного вызова функции ".get ()".

Как правило, каждый раз, когда вы видите JavaScript API, подобный этому:

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

это хорошая ставка, что функция может быть асинхронным механизмом, и что функция обратного вызова, которую вы предоставляете, будет вызываться только позже, когда событие действительно произойдет. В этих случаях вы должны структурировать свой собственный код так, чтобы действия, которые необходимо выполнить после завершения операции, выполнялись в коде внутри обратного вызова.

(Это не всегда так; некоторые API функционального программирования, например, принимают функции в качестве аргументов.)

...