Posté(e) le 9 décembre 201014 a salut tout le monde ! merci de m'aider :) j'ai cette classe var db_users = new function () { this.table = "users"; /**this.count**/ this.count = function (param) { var db = db_connect(); if (db) { var qry = "SELECT COUNT(*) FROM " + this.table + " "; if (param) qry += param; var nbr; db.query(qry, function (res, errorNo) { if (errorNo) Ape.log('Request error : ' + errorNo + ' : ' + this.errorString()); else { //Ape.log('Fetching ' + res.length + " Users : " + res); //renvoyer res a celui qui a appele db_users.count(); //nbr = res; } }); //Affichage de nbr } else Ape.log("no connect"); } /**this.get**/ this.get = function () { } /**this.getAll**/ this.getAll = function () { } } et j'aimerais pouvoir compter le nombre d'utilisateur de la table users ainsi var nbr_u = db_users.count(); j'aimerais pouvoir récupérer le contenu de la variable res mais le code n'est pas synchrone après avoir appelé db.query le code continu sans pour autant attendre le callback . existe t'il un moyen de renvoyer res a nbr_u ? merci
Posté(e) le 9 décembre 201014 a Ca devrait donner quelque chose du genre : var db_users = new function () { this.table = "users"; this.count = function (param, cb) { var db = db_connect(); if (db) { var qry = "SELECT COUNT(*) FROM " + this.table + " "; if (param) qry += param; var nbr; db.query(qry, function (res, errorNo) { if (errorNo) Ape.log('Request error : ' + errorNo + ' : ' + this.errorString()); else { cb(res); } }); } else Ape.log("no connect"); } this.get = function () {} this.getAll = function () {} }; var inst = new inst = new db_users(), nbr_u; inst.count("WHERE PROP='VALUE'", function(res){ nbr_u = res; }); PS : Bordel il fait chier le nouveau forum à faire de la merde avec les espaces !! Pas moyen de faire quelque chose de correct il retire et rajoute des espaces un peu partout !
Posté(e) le 9 décembre 201014 a Auteur Cela marche merci ! PS : pas la peine de mettre cette ligne : var inst = new inst = new db_users(), nbr_u; une instance de db_users est automatiquement cree au chargement de la classe. encore merci !
Posté(e) le 9 décembre 201014 a Derien. Effectivement, je n'avais pas vu le new à la déclaration. Et sinon la j'ai fait une belle boulette var inst = new inst = new db_users(), nbr_u; Il fallait bien sûr lire var inst = new db_users(), nbr_u; Sinon je pense que le mieux c'est que tu passe un callback en cas de succès et en cas d'erreur. Ou alors que tu remplace directement le callback que tu passe à la méthode query : mais dans ce cas tu ne peux pas forcément encapsuler ta logique de log, donc les deux se défendent.
Posté(e) le 9 décembre 201014 a Auteur Salut !! oui j'avais compris pour l'instant j'essaye de maitriser le serveur comet . j'essaye de faire un exemple concret avant de tout nettoyer et mettre en place une architecture plus propre.
Archivé
Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.