Le rappel, la valeur de retour et HTML5 fonction executeSql

J'ai un gros problème. Je sais que c'est à propos de rappel, la fermeture, mais je ne sais pas comment résoudre le problème. Voici mon code

$.Model.extend('Article',
{
     findAll : function(params, success, error){                
                var result = []
                db.transaction(function(tx) {
                    tx.executeSql('select * from contents', [],function(tx, rs) {
                        for(var i=0; i<rs.rows.length; i++) {
                            var row = rs.rows.item(i)
                            result[i] = {
                                id: row['id'],
                                title: row['title'],
                                body: row['body']
                            }
                        }
                    })
                })
                //here result is undefined
                alert(result)
                return result
    }
})
//undefined
var view = Article.findAll

Je sais que executeSql est asynchrone fonction, mais je ne sais pas comment faire pour sauvegarder et retourner le résultat de executeSql. J'utilise javascript mvc et HTML en mode hors connexion de la base de données.

Merci pour votre aide

Je Google avait "Javascript MVC" et a trouvé à la bibliothèque, mais ne peut pas trouver quoi que ce soit dans le JavaScript MVC docs sur 'executeSql'. Si vous avez des docs à portée de main, vous devriez vérifier pour voir si il y a une façon de faire de la tx.méthode executeSql exécuter de manière synchrone au lieu de l'asynchrone.
Je sais qu'il existe aussi la méthode synchrone pour executeSql, mais safari et les autres navigateurs basés sur webkit en charge uniquement asynchrone. Le Code ci-dessous fonctionne parfaitement, merci les gars
Fonctionne parfaitement? On pourrait presque dire que c'était la "réponse" ? 😉
L'API synchrones s'applique uniquement (dans la spec) pour des web workers, pas de la fenêtre de l'objet, ce qui n'est pas une possibilité. dev.w3.org/html5/webdatabase/#databases

OriginalL'auteur Tibor | 2009-12-13