Javascript Database API возвращает результат - PullRequest
0 голосов
/ 10 ноября 2011

Привет всем, что я только что дурачился с API базы данных HTML5, и у меня возникли проблемы с возвратом результата из функции. Вот что у меня есть.

var list = GetScenarios();

GetScenarios: function()
{

var scenarios;

// get all the scenarios
conn.transaction(function(_t) {

_t.executeSql('SELECT * FROM scenarios', [], function(_tr, _result) {

        scenarios = _result.rows;

    });
});

return scenarios;

}

Мне удается получить строки из БД, но строки не будут назначены для переменных сценариев. Я знаю, что это область действия, но я не могу думать, как вернуть результат из функции GetScenatios.

Когда я регистрирую _result.rows, у меня там есть данные, но сценарий всегда неопределен;

Есть мысли?

Вот как настроен мой js-файл.

window.MyExtension = (function() 
{

    return ({

    OtherMethod: function() {   


        var list = window.MyExtension.GetScenarios();

    },

    GetScenarios: function() {

         ...see above

    }

}());

1 Ответ

1 голос
/ 10 ноября 2011

Похоже, вы пытаетесь вернуть код из асинхронного запроса, как если бы он был синхронным.Вам необходимо добавить параметр обратного вызова в GetScenarios():

function GetScenarios(callback) {
    conn.transaction(function(_t) {
        _t.executeSql('...', [], function(_tr, _result) {
            callback(_result.rows);
        });
    });
}

и изменить код вызова с:

var list = GetScenarios();
// do something with list

На, это:

GetScenarios(function (list) {
    // do something with list
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...