синхронизация executeSql в базе данных Safari (WebKit) Web Sql - PullRequest
1 голос
/ 09 августа 2010

WebKit (Safari 4+ - мой фокус) имеет функцию под названием Web SQL.Веб-SQL указан в черновик W3C .В настоящее время поддерживается только асинхронный вариант.

У меня есть ситуация, когда я хочу синхронизировать несколько различных операций - запись в базу данных (с помощью запроса CREATE TABLE и затем цикл по запросам INSERT), а затем чтение из базы данных,Как мне это сделать?Я погуглил и прочитал много учебников, но не нашел объяснения этому.

Если я не смогу найти ответ на этот вопрос, я попробую функцию Worker, а в случае неудачи планирую вместо этого сохранить данные в webstorage (localstorage) .

Ответы [ 3 ]

1 голос
/ 27 марта 2011

Я написал возможное решение для этого в своем блоге. Не знаю, подойдет ли это вашей проблеме, но посмотрите. http://wander -mind.blogspot.com / 2011/03 / как к Синхронизировать-html5-WebSQL-with.html

0 голосов
/ 07 августа 2013

Вы связываете операции через успешные обратные вызовы. Таким образом, вы можете быть уверены в порядке операций. См. Пример кода, доступного в этой статье .

Вы можете использовать обратные вызовы, доступные для объекта транзакции или отдельных запросов, tx.executeSql(sql, [], callback, errorCallback).

var sql_createTables = "CREATE .....",
  sql_inserts= "INSERT .....";

function errorHandler(tx, error) { 
  //do error handling
}

db.transaction(
 function(tx){
  tx.executeSql(sql_createTables,[], function(tx, result){
     //The table was created
    tx.executeSql(sql_inserts,[], function(tx, result){
       // Inserts completed
    });
  },
  errorHandler);
 }, function(error) { alert("Oh, noes! The whole transaction failed!"); },
 function() { alert("Yeah, baby! We did it."); });

WebWorker не имеет к этому никакого отношения и никак не поможет, поскольку WebWorker не имеет доступа к DOM, частью которого являются localStorage и WebSql.

0 голосов
/ 18 октября 2010

Кажется, что никто не отвечает на это. Мое текущее обязательство состоит в том, что хранение блока в локальном хранилище является лучшим

...