我编写了一个对象,让我可以更轻松地使用 Phonegap 的数据库。SELECT 语句的部分如下:
/********************
* Database SELECT: *
********************/
global.select = function(query)
{
var resultSet = null;
db.transaction(function(tx){ // Do SQL stuff here:
tx.executeSql(query, [], function(tx, results){ // Success:
// When results are there:
if(results != null)
{
// return them for using them:
resultSet = results;
alert("Results are here: " + results);
}
// In all other cases:
else
{
// Return false (error):
return false;
}
}, function(error){ // Error:
global.logError(error);
});
}, function(error){ // Error:
global.logError(error);
}, function(){ // Success:
consoleLog("SELECT complete!");
alert("Return would be: " + resultSet);
return resultSet;
});
} // <-- global.insert = function(query)
让我头疼的部分尝试使用上面的函数从表中选择所有内容。我遇到的问题是,通过这样做,我得到了超出我能力的异步行为......
这是尝试选择内容的代码:
var results;
if( results = db.select('SELECT * FROM my_table WHERE 1') )
{
alert("Result in index.html success: " + results);
// Do stuff with query results here...
}
else
{
alert("Result in index.html failure: " + results);
}
执行此操作时,
alert("Result in index.html failure: " + results);
是我看到的第一个输出。它似乎在选择甚至开始之前执行。我究竟做错了什么?
另外,我不确定如何从 SELECT 函数返回结果。由于有嵌套函数,我不知道如何优雅地处理它。这部分有什么想法吗?
太感谢了!