我在另一个问题中发布了大部分相同的代码,但我在这里有一个不同的问题 - 我应该如何理解Javascript异步代码?了解Javascript异步调用
function getUserStatus() {
var status;
function querySuccess(tx, results) {
var len = results.rows.length;
var row = results.rows.item(0);
console.log(row['id']);
status = {
question: row['id']
};
}
function errorCB(err) {
console.log(err);
}
db.transaction(function(tx) {
tx.executeSql('SELECT id FROM calculator ORDER by id ASC LIMIT 1', [], querySuccess, errorCB);
});
querySuccess();
console.log(status);
return status;
}
我知道我的代码在变量状态被定义之前正在执行 - 但是如何在状态被定义之前停止处理呢?我不希望这个过程是异步的 - 如果数据库没有提供任何内容,那么我不希望操作继续。
我的印象是我需要调用querySuccess(),但我会传递给它什么参数?
我对Javascript比较新,我以前没有遇到过这个概念,我对它的工作方式以及如何让我的代码执行我想要的方式感到困惑。
它总是同步的。你不需要自己调用'querySuccess',当查询结束时它会自动调用。将'console.log()'调用放入'querySuccess()'中。 – Barmar 2015-02-12 02:43:53
所有依赖查询成功完成的查询都应在'querySuccess()'函数中。你不能从函数中返回'status'。 – Barmar 2015-02-12 02:46:14