【发布时间】:2014-07-16 20:21:12
【问题描述】:
My Phonegap 应用程序检查设备上数据库中的代码 (WebSQL)。如果找到数据库和记录,则打开页面,否则调用 addActivationCode() 函数,该函数显示表单以要求输入代码。
困扰我的部分是当数据库存在并且记录存在时,为什么底部的 IF 在 tx.executeSQL 之前被调用?
我已经在 Chrome 中使用警报对此进行了测试,并且在 onDeviceReady 函数完成之前肯定会调用 IF。
找到数据库后,var len 被设置为一个计数。但是,首先测试 IF,因此 len==0 并显示表单,然后 tx.executeSql 运行并在表单上显示页面。
是否有可能以某种方式阻止这种行为?
(这是代码的网络浏览器版本。我使用的是 JQuery):
$(document).on('pageinit','#home',function(){
$("#activation_form").hide();
checkDB();
function checkDB() {
db = window.openDatabase('TEST','1.0','test',2*1024);
var len = 0;
var act_code = "";
db.transaction( function (tx){
tx.executeSql('SELECT * FROM TEST',[],function(tx,results){
var i;
len = results.rows.length;
for (i = 0; i < len; i++){
act_code = results.rows.item(i).actcode;
}
build_page(act_code);
}, null);
if (len === 0){
addActivationCode();
}
});
}
});
为什么在 tx.executeSQL 运行之前调用这个 IF? var len 未设置,即使数据库存在。几秒钟后 tx.executeSql 运行,var len 被设置为一个值并调用 build_page。
提前致谢。
【问题讨论】:
标签: jquery-mobile cordova