2010-08-09 7 views
1

WebKit (Safari 4+ est mon objectif) a une fonctionnalité appelée Web SQL. Web SQL est spécifié dans the W3C draft. Actuellement, seule la saveur asynchrone est prise en charge.synchronisation executeSql dans Safari (WebKit) Web Sql base de données

J'ai une situation où je veux synchroniser quelques opérations différentes - écriture dans la base de données (à l'aide de la requête CREATE TABLE puis d'une boucle dans les requêtes INSERT) puis lecture de la base de données. Comment puis-je faire cela? J'ai googlé et lu beaucoup de tutoriels, mais je n'ai trouvé aucune explication à ce sujet.

Si je ne trouve pas de réponse à cette question, j'essaierai la fonction Travailleur et si je ne réussis pas, je prévois de stocker les données dans webstorage (localstorage) à la place.

Répondre

0

Il semble que nbody répond à cette question. Mon actuel sous-entend est que le stockage d'un bloc dans localstorage est le meilleur

+0

quelqu'un a. Un peu tard à la fête peut-être;) – oligofren

0

Vous enchaîner les opérations grâce à callbacks de succès. De cette façon, vous pouvez être sûr de l'ordre des opérations. Voir l'exemple de code disponible au this article.

Vous pouvez utiliser les rappels disponibles pour l'objet de transaction ou les requêtes individuelles, 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 n'a rien à voir avec cela, et ne vous aider de quelque façon, en tant que WebWorker n'a pas accès au DOM, dont localStorage et WebSql sont parties.

Questions connexes