Обратный вызов с WebSQL (Phonegap) - PullRequest
3 голосов
/ 12 января 2012

Я программирую приложение с помощью Phonegap & Sencha Touch. У меня есть файл viewport.js с интерфейсом Sencha и databaseFunctions.js со всеми функциями баз данных и запросов.

Я хочу вызвать эту строку в viewport.js:

if(launchRequest('SELECT * from items',nombreItems)) alert('there are items');

Вот упрощенная функция:

function launchRequest(requete,callback){
    var db = openDatabase('database', '1.0', 'database', 2 * 1024 * 1024);

    db.transaction(function (tx) {

        tx.executeSql(requete,[],
        function (tx, results) {        
            return callback(results.rows.length);
        });

    });
}
function nombreItems(num) {return num;}

Я не знаю, как получить возвращаемое значение моей функции. Обычно у меня есть возврат в конце моей функции (в стандартном SQL), но здесь результаты передаются другой функции.

1 Ответ

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

Этот код будет делать то, что вы просите, потому что интерфейс WebSQL асинхронный, вы не можете «возвращать» значения.

launchRequest('SELECT * from items',nombreItems);

function launchRequest(requete,callback){
    var db = openDatabase('database', '1.0', 'database', 2 * 1024 * 1024);

    db.transaction(function (tx) {

        tx.executeSql(requete,[],
        function (tx, results) {        
            callback(results.rows.length);
        });

    });
}
function nombreItems(num) {
    if(num){
        alert('there are items');
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...