0

我是phonegap的新手。

我需要做的是从这里返回 Json 格式的结果集。我这样调用这个函数:

var response=getSqlResultSet();

以及如何停止我的代码,直到我得到响应getSqlResultSet()

请建议如何做到这一点。

function getSqlResultSet() {
    if (!db) {
        db = window.openDatabase("Database", "1.0", "PhoneGap Demo", 200000);
    }
    db.transaction(queryDB, errorCB); 
} 

function queryDB(tx) {
    tx.executeSql('SELECT * FROM DEMO', [], querySuccess, errorCB);
}

function querySuccess(tx, results) {}
4

2 回答 2

1

对于 PhoneGap 初学者,此链接会有所帮助:

简单的离线数据同步 phonegap / sqlite

带有 jquery mobile 和 phonegap 的示例应用程序

于 2013-05-28T09:49:01.497 回答
0

Javascript是异步的。你不会“停止你的代码”。相反,你在你的 querySuccess 函数中放了一些东西来继续任何需要做的事情。

function getSqlResultSet() {
    if (!db) {
        db = window.openDatabase("Database", "1.0", "PhoneGap Demo", 200000);
    }
    db.transaction(queryDB, errorCB); 
} 

function queryDB(tx) {
    tx.executeSql('SELECT * FROM DEMO', [], querySuccess, errorCB);
}

function querySuccess(tx, results) {
     // Whatever you would have put after
     // var response=getSqlResultSet();
     // Put here instead
}

如果您使用的是 jQuery,您可能会发现包装在 Deferred 对象中更容易:

function getSqlResultSet() {
    var dfr = new $.Deferred();
    if (!db) {
        db = window.openDatabase("Database", "1.0", "PhoneGap Demo", 200000);
    }
    db.transaction(function (tx) {
        tx.executeSql('SELECT * FROM DEMO', [], dfr.resolve, dfr.fail);
    }, dfr.fail); 

    return dfr.promise();
} 

getSqlResultSet().then(function (response) {
    // Your code here
});
于 2013-07-20T00:30:02.930 回答