I'am trying to gather some data from my Chrome Extension Web SQL database with following code:
function getHistory(year, month, day, callback){
getDayIdByYMD(year, month, day, function(dysId){
var sql = "SELECT DISTINCT HT_URL FROM HISTORIES WHERE HT_DYS_ID = ?;";
db.transaction(function(tx){
tx.executeSql(sql, [dysId], function(tx, results){
var array = [];
$.each(results.rows, function(index, element){
var url = element['HT_URL'];
array.push(url);
});
internalGetHistory(array, dysId, callback);
});
});
});
}
function internalGetHistory(array, dysId, callback){
var returnArray = [];
$.each(array, function(index, url){
getSingleHistoryArray(dysId, url, function(hist){
var tmp = { Url : url, History : hist};
returnArray.push(tmp);
});
});
callback(returnArray);
}
function getSingleHistoryArray(dysId, url, callback){
var sql = "SELECT HT_FROM, HT_TIME FROM HISTORIES WHERE HT_DYS_ID = ? AND HT_URL = ?;";
db.transaction(function(tx){
tx.executeSql(sql, [dysId, url], function(tx, results){
var array = [];
$.each(results.rows, function(index, element){
var obj = {
From : element['HT_FROM'],
Time : element['HT_TIME']
};
array.push(obj);
array.push(2);
});
callback(array);
});
});
}
function printHt(){
getHistory(2016,7 - 1,28, function(o){
console.log(o);
})
}
But my problem is that function internalGetHistory
does not return array. It's always empty. First sql query returns not empet array of urls. The next one - getSingleHistoryArray
should return array of time and timespan corresponding to that url. There is no problem with connection to my database or database entries. I think that this question concrens javascript and callback functions. Thanks for your help!