How do I wait for the callback function to return?
I am making an android app using phonegap. I am using phonegap Storage api to query the database. here's my code:
function directPath(src, dest)
{
var db = window.openDatabase("Database", "1.0", "PhoneGap Demo", 200000);
db.transaction(queryDB, errorCB);
return arrayroute;
}
function queryDB(tx)
{
tx.executeSql(query, [], querySuccess, errorCB);
}
function querySuccess(tx,results) {
//Write some code here.
}
function errorCB(err) {
alert("Error in SQL: " + err);
}
The problem is that I want to wait for the querySuccess callback method to finish executing before returning from the directPath method.
+3
source to share
3 answers
I wrote a function to solve a similar problem, you can call it like this:
database("SELECT * FROM USER", function(result){
console.log(result);
});
//FUNCTION
function database(sql, callback) {
if(!callback) { callback = function(r) { console.log(r); } }
var database_name = "Database",
database_version = "1.0",
database_displayname = "DatabaseName",
database_size = 1000000,
result = {
error: -1,
message: "",
len: 0,
rows: {}
},
db = window.openDatabase(database_name, database_version, database_displayname, database_size);
db.transaction(
function (tx) {
tx.executeSql(sql, [], querySuccess, errorCB);
}, function (tx, results) {
//SUCCESS
}, function (err) {
//ERROR
}
);
function querySuccess(tx, results) {
if (results) {
result.len = results.rows.length;
result.message = "Success";
for (var i=0; i<result.len; i++){
result.rows[i] = results.rows.item(i);
}
} else {
result.len = 0;
}
callback( result );
}
function errorCB(err) {
result.error = err.code;
result.message = err.message;
callback( result );
}
}
+3
source to share