我有一个使用SQLite数据库的Cordova移动应用程序。我正在使用cordova-sqlite-storage
插件。我需要一个接一个地执行两个选择并获得结果。是否可以避免嵌套?如果是这样,怎么样?找不到任何关于如何做的例子。
P.S。我需要使用两个查询的结果退出函数
ctx.transaction(function(tx) {
tx.executeSql("SELECT * FROM cards WHERE lastupdate > ?;", [lastSync], function(tx, rs) {
// get the result here from first select
tx.executeSql("SELECT * FROM events WHERE lastupdate > ?;", [lastSync], function(tx, rs) {
// get the result from second select and return
// return with results from both queries
}, function(tx, error) {
// fail
});
}, function(tx, error) {
// fail
});
});
答案 0 :(得分:1)
由于您不需要第一次选择的结果,我认为您不需要嵌套。这样的事情应该有效:
var result1, result2;
ctx.transaction(function(tx) {
tx.executeSql("SELECT * FROM cards WHERE lastupdate > ?;", [lastSync], function(tx, rs) {
// get the result here from first select
result1 = ...;
}, function(tx, error) {
// fail
});
tx.executeSql("SELECT * FROM events WHERE lastupdate > ?;", [lastSync], function(tx, rs) {
// get the result from second select and return
result2 = ...;
}, function(tx, error) {
// fail
});
}, null, function() {
//do something with results;
});
该插件仍然应该按顺序排队并执行它们。