Web SQL - JavaScript异步:数据在从数据库中提取之前打印出来

时间:2015-08-02 13:18:46

标签: javascript asynchronous web-sql

这是我用JavaScript编写的getHTML5SQLiteData函数代码,它从我的Web SQL Database表中返回一个值:

function getHTML5SQLiteData(_keyName){
    var returnValue = undefined;
    if (_isBrowserSupportSQLite()) {
        try {
            _SQLiteDatabase = openDatabase(DEFAULT_SQLITE_DB_SHORTNAME, DEFAULT_SQLITE_DB_VERSION, DEFAULT_SQLITE_DB_NAME, DEFAULT_SQLITE_DB_SIZE);
            _SQLiteDatabase.transaction(function (tx) {
                tx.executeSql('SELECT * FROM My_Table', [], function (tx, results) {
                    var len = results.rows.length;
                    for (var i = 0; i < len; i++){
                        if (results.rows.item(i).keyName == _keyName) {
                            returnValue = results.rows.item(i).keyValue;
                        }
                    }
                }, function (tx, error){});
            });
        } catch(e){
            console.error("Error: " + e);
            return returnValue;
        }
    }
    else {
        // do nothing
    }
    console.log("HTML5 SQLite data: " + returnValue);
    return returnValue;
}  

这个问题是当我运行这个功能时,这就是在我的控制台中打印出的内容:
HTML5 SQLite data: undefined
(数据存储在数据库中,我使用开发人员工具&gt;资源选项卡&gt; Web SQL查看)
奖金,当我在Chrome开发者工具中调试它时,它显示在分配命令(console.log)之前调用了returnValue = results.rows.item(i).keyValue;命令。 所以我猜这里的问题是JavaScript异步机制,但我还不知道如何解决它。
真的希望你们能帮忙!非常感谢先进!

0 个答案:

没有答案