Я работаю над веб-приложением на основе HTML5, которое будет использовать локальную базу данных SQL.
Когда приложение запускается, оно должно сделать следующее (упрощенно, но примерно правильно):
- Проверьте, существует ли база данных; если нет, создайте его
- Проверьте, существует ли таблица A; если нет, создайте его
- Проверьте, существует ли таблица B; если нет, создайте его
- Проверьте, существует ли таблица C; если нет, создайте его
- Проверьте, какие данные имеются в каждой таблице A; если он пуст, предварительно заполните его значениями по умолчанию
- Проверьте, какие данные имеются в каждой таблице B; если он пуст, предварительно заполните его значениями по умолчанию
- Проверьте, какие данные имеются в каждой таблице C; если он пуст, предварительно заполните его значениями по умолчанию
- Визуализация интерфейса на основе данных, полученных в шагах 5-7
Насколько я понимаю, каждая транзакция executeSQL является асинхронной.
В этом случае - определенные шаги должны быть выполнены, прежде чем другие шаги могут быть выполнены. Другими словами, # 1 должен быть завершен, прежде чем что-либо еще может произойти. Далее # 2, # 3 и # 4 не должны выполняться последовательно - но # 2 должен быть завершен до # 5, # 3 должен быть завершен до # 6 и т. Д.
Это должно быть довольно распространенным испытанием. Итак, как лучше всего кодировать ряд зависимых транзакций SQL, как это?
Для чего оно стоит - это приложение предназначено исключительно для iPhone, поэтому мне не нужно беспокоиться о причудах браузера или проверять наличие этой функции. Но кросс-браузерное решение всегда предпочтительнее.
Заранее большое спасибо!