2010-08-09 2 views
1

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

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

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

ответ

0

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

+0

у кого-то есть. Возможно, немного поздно на вечеринку;) – oligofren

0

Вы связываете операции с помощью обратных вызовов. Таким образом, вы можете быть уверены в порядке операций. См. Примерный код, доступный в this article.

Вы можете использовать обратные вызовы, доступные для объекта транзакции или отдельных запросов, 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 являются частями.