Tôi đang cố gọi một hàm SELECTS giá trị từ cơ sở dữ liệu SQL Web của tôi. Tôi muốn trả về các giá trị SELECTED thành một biến bên trong hàm cha. Tuy nhiên, biến luôn luôn trả về trống, thời tiết là toàn cục hay không.Giá trị trả về giao dịch SQL Web SELECT
Như bạn có thể thấy console.log bên trong hàm selectRow ghi lại các giá trị chính xác từ truy vấn cơ sở dữ liệu, nhưng console.log hiển thị trống trong hàm initDB.
Tôi cũng nhận thấy rằng nhật ký trống hiển thị trước nhật ký bên trong hàm selectRow. Tôi đã tìm thấy các diễn đàn nơi mọi người đang nói về các giao dịch cơ sở dữ liệu không đồng bộ. Tôi hiểu rằng đây là lý do tại sao biến của tôi được trả về trống. Tuy nhiên, sau khi đánh đầu vào tường nhiều lần, tôi vẫn không thể tìm ra cách để giải quyết vấn đề không đồng bộ này.
/** Initialize Database **/
function initDB(){
createTable();
var pleaseWork = selectRow("SELECT * FROM planets;");
console.log(pleaseWork);
}
/** Select Row from Table **/
function selectRow(query){
var result = [];
db.transaction(function (tx) {
tx.executeSql(query, [], function(tx, rs){
for(var i=0; i<rs.rows.length; i++) {
var row = rs.rows.item(i)
result[i] = {
id: row['id'],
name: row['name']
}
}
console.log(result);
}, errorHandler);
});
return result;
}
Cảm ơn bạn rất nhiều. Callbacks là một khái niệm mới cho tôi nhưng tôi chắc chắn sẽ tìm hiểu thêm về chúng. –
Gọi lại là khái niệm khó nhất để làm quen khi bắt đầu bằng javascript – drinovc