2013-05-28 66 views
0

我是phonegap新手。如何使用JQuery/Phone Gap插件從Sqlite返回Json數據

我需要做的是從此返回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) {} 
+0

如果你需要的JSON返回? – rjmunro

回答

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 
});