Функция транзакции является асинхронной: она не ждет, пока функция, которую вы задали в качестве параметра, не возвращает, и фактически, вероятно, ничего не возвращает.
Я не думаю, что можно написать функцию-обертку, которая возвращает результат, если вы не ждете в цикле, что проблематично для JavaScript, а также не рекомендуется.
function executeSQL(query, callback) {
db.transaction(function(q) {
q.executeSql(query, null, function (q, results) {
callback(results);
}, function (q, error) {
debug(error);
});
});
}
var query = "SELECT 1";
executeSQL(query, function(result) {
alert(result);
});
alert("When am I?"); // this may get called before alert(result)