2011-02-03 3 views

Répondre

3
var value; 

statement.executeAsync({ 
    handleResult : function(aResultSet) { 
    value = 1; 
    }, 
    handleCompletion : function(aReason) { 
    print(value); 
    } 
}); 
+0

ya J'ai essayé, cela ne fonctionne pas ... donc la fonction est exécutée plusieurs fois dans une courte période, je veux qu'elle exécute du code une seule fois, je le fais en plaçant un drapeau global, mais ça ne fonctionne pas –

+0

J'ai quelque chose comme ceci: 'var value = 0; statement.executeAsync ({ handleResult: function (aResultSet) { valeur = 1;} , handleCompletion: fonction (aReason) { si (valeur) do_something();} }); ' –

+0

@ Tony Avez-vous essayé 'alert'-ing ou' console.log'-ging the 'value' pour voir si et quand il change réellement? – deceze

0

Bien la chose évidente à remarquer est que vous passez un objet à executeAsync. (En particulier, il est un mozIStorageStatementCallback, il devrait donc avoir une méthode HandleError aussi.) Vous pouvez donc facilement associer des propriétés spécifiques à cet objet avec l'objet, en utilisant le mot-clé « this »:

statement.executeAsync({ 
    value: 1, 
    handleResult: function(aResultSet) { 
    this.value = 0; 
    }, 
    handleError: function(aError) { 
    this.value = 2; 
    }, 
    handleCompletion: function(aReason) { 
    print(this.value); 
    } 
}); 
Questions connexes