带有sqlite代码的Javascript循环
我使用下面的代码带有sqlite代码的Javascript循环,javascript,sqlite,loops,Javascript,Sqlite,Loops,我使用下面的代码 t.executeSql('SELECT buildingcode, flatname, flatdescription FROM buildingflats WHERE buildingcode = ? ORDER BY flatname ASC',[buildingcode], function(t, resultflatcomment) { var j, lenflatcomments = resul
t.executeSql('SELECT buildingcode, flatname, flatdescription FROM buildingflats WHERE buildingcode = ? ORDER BY flatname ASC',[buildingcode], function(t, resultflatcomment) {
var j,
lenflatcomments = resultflatcomment.rows.length,
rowflatcomments,
row;
if (lenflatcomments > 0 ) {
for (j = 0; j < lenflatcomments; j += 1) {
rowflatcomments = resultflatcomment.rows.item(j);
alert(rowflatcomments.flatname);
t.executeSql('SELECT DISTINCT flatdescription, flatname, buildingcode FROM bill WHERE buildingcode = ? AND flatdescription = ?',[buildingcode, rowflatcomments.flatname], function(t, resultflat) {
var len = resultflat.rows.length;
if (len > 0) {
row = resultflat.rows.item(0);
alert(row.flatdescription);
} else {
alert(rowflatcomments.flatname);
}
$("#opt2").selectmenu('refresh');
});
}
}
});
但是alertrowflatcomments.flatname;在循环内的SQLite选择之前执行
rowflatcomments.flatname始终是buildingflats的最后一个选择
我怎样才能修好它呢?我不太清楚,只是个问题。sql中的分号在哪里?nullDataHandler中的警报。简单地说,我想这个问题是不合适的。当调用executeSql时,必然会调用nullDatahandler函数。SQL select将被发送,循环将继续执行。SQL select的回调将在其完成时执行。这回答了你的问题吗?此外,您还可以获取大量警报,然后执行所有回调。回调的顺序也可能与发出回调的顺序不同。唯一可以保证的是警报将按顺序一个接一个地出现。对不起,我不知道如何解决这个问题?对不起,我的英语不好学。