这是我用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异步机制,但我还不知道如何解决它。
真的希望你们能帮忙!非常感谢先进!