Я начал использовать HTML5 и WebSQL и быстро столкнулся с проблемой: все вызовы БД асинхронны.Я пришел из программирования PHP, где все вызовы являются синхронными, и я в растерянности с асинхронными вещами.
По сути, я открываю БД и запускаю запрос, который использует параметр id.переход на страницу через GET (то есть http://myserver.com/mypage.html?id=123). мне нужен результат в globalResult:
id=window.location.search.substring(1).split('=')[1];
db=openDatabase("testDB", "1.0", "Test Database", 10000000);
db.transaction(function(tx)
{
tx.executeSql("SELECT * FROM testTable WHERE id="+id,[],successCB,errorCB);
});
function errorCB(tx,err)
{
alert("Error processing SQL: "+err);
}
function successCB(tx,result)
{
globalResult=result.rows.item(0)['description'];
}
...Javascript code which needs globalResult to be set...
Теперь, поскольку запрос асинхронный, интерпретатор начинает выполнять остальную часть кода перед тем, как получитьрезультаты, и, конечно, это не работает.
Есть ли какой-нибудь прием для синхронного выполнения запросов или какой-то прием для воспроизведения функций обратного вызова для решения этой проблемы?
Спасибо зазаранее, ребята:)