我在另一個問題中發佈了大部分相同的代碼,但我在這裏有一個不同的問題 - 我應該如何理解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