我已经创建了一个函数myFunction,它执行简单的任务,即从sqlite数据库中检索数据并将其保存在一个可以轻松使用的数组中。此功能应遵循以下步骤来实现我的功能。
但它正在这个序列中执行这些步骤; 3,1,2,所以我没有得到数据,因为它没有得到它就返回。
e.g。
function myFunction() {
var ret;
var arr = [];
db.transaction(function (trans) {
trans.executeSql('SELECT * FROM tblname', [],
function (transaction, result) {
if (result != null && result.rows != null) {
for (var i = 0; i < result.rows.length; i++) {
var row = result.rows.item(i);
ret = row.urlcolmn;
arr.push(ret);
alert('alert 1'); // just to check which line(alert) is called first
}
}
}, errorHandler);
}, errorHandler, nullHandler);
alert('alert 2'); // just to check which line(alert) is called first
return arr;
}
在上面的代码中,警报2显示在警报1之前.....这就是为什么它不返回数组中的值。这个问题可能是因为JS中的sqlite是异步的。