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

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 に答える