考虑:
var globalvar;
function viewyearmain() {
db.transaction(function (tx)
{
tx.executeSql('SELECT * FROM BUDGET WHERE holdingtype="month"', [], function (tx, results)
{
var len = results.rows.length;
msg = len;
globalvar = msg;
}, null);
});
if (globalvar>0)
{
alert("ROWS FOUND");
}
else
{
alert("ROWS NOT FOUND");
}
}
问题是 ROWS NOT FOUND
出现,因为在到达 if
语句时事务尚未完成。
原文由 user2058890 发布,翻译遵循 CC BY-SA 4.0 许可协议
异步回调不是同步的,不管你想要多少。
只需将 所有 依赖于结果的代码移动到回调中:
或者,将其移动到第二个函数中,并从回调中调用它。