IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

NodeJS Discussion :

API pour application mobile - Traitement des fonctions asynchrones


Sujet :

NodeJS

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    204
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 204
    Points : 159
    Points
    159
    Par défaut API pour application mobile - Traitement des fonctions asynchrones
    Bonjour,

    Je débute avec Node.js dans le but de créer des API pour mes applications mobiles.
    Habitué de PHP/mysql, j'ai un peu de mal à appréhender les changements que cela provoque dans le développement.

    Mon problème principal est la gestion de toutes les fonctions asynchrones (dans le cas présent, les requêtes mysql).

    En PHP, c'était très simple, on faisait les requêtes (séparément, conditionnés...), on traitait les résultats, on balançait les résultats.
    En JavaScript, c'est plus compliqué différent.

    Avez-vous une méthodologie pour faciliter le traitement?
    Les requêtes imbriquées les unes aux autres dans les callbacks, ça devient vite galère (et un sacré bordel) à gérer quand elles sont nombreuses.

    Merci d'avance.

  2. #2
    Expert éminent
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Points : 9 127
    Points
    9 127
    Par défaut
    en javascript tu fais appel à une méthode qui invoque un service (quel qu'il soit)
    tout comme en php tu fais appel à une lib pour interroger ta base.

    la différence est qu'en javascript tu donne dans ton appel une référence à une fonction qui devra traiter le résultat
    alors qu'en php tu est bloqué pendant tout l'appel et tu attend le résultat.
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    function traiterResultat($resultat) {
      //ici on traite les résultat
      foreach($....)
    }
     
     
    $reslut = callTheService(); //interrogation de la base
    //là tu est complètement bloqué si la base mes 10mn à répondre ton php est suspendu.
    //tu ne peux rien faire même si tu a beaucoup de chose que tu pourrais traiter le temps que la base réponde
    traiterResultat($resultat);
    //le traitement est fini
    //là c'est pareil on traite le résultat dans la fonction
    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    function traiterResultat(resultat) {
      //ici on traite les résultat
      foreach(resul....)
    }
     
    callTheService(traiterResultat)//on appelle le service en indiquant que traiterResultat devra traiter le résultat lorsqu'il arrivera
    //là tu n'est pas bloqué la base peut mettre 10mn à répondre tu peux faire toutes les choses que tu peux traiter sans avoir le résultat;
    //lorsque la réponse arrivera js terminera les traitements commencés avant d'invoquer la fonction traiterResultat

    dans les deux cas le traitement du résultat est fait par la fonction traiterResultat

    en php tu invoque le service tu attends la réponse puis tu appelle la fonction avec la réponse.
    en javascript tu invoque le service js se chargera tout seul de traiter la réponse tu peux passer à autre chose.

    imagine que tu veuille prendre un rdv avec un collègue et le noter

    tu l'appelle au téléphone il te réponds mais comme il a un double appel il te met en attente.
    tu reste pendu à ton téléphone pour attendre la réponse.
    Il te dit demain 14 heure
    et tu le note.
    ça c'est php.

    autre solution tu lui envois un mail et tu garde dans un coin de ta tête que tu dois noter la réponse.
    puis tu va développer une super application nodeJS
    tout d'un coup ta messagerie te notifie
    tu sauve ce que tu faisais.
    tu prends la réponse et tu la note.
    ça c'est javascript.

    A+JYT

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    204
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 204
    Points : 159
    Points
    159
    Par défaut
    Merci.
    J'avais bien compris ce principe.
    Ma question portait plus le développement en lui-même et les méthodes à utiliser.

    J'ai trouvé le module async qui est fait pour résoudre le problème.
    Me reste à découvrir toutes ces fonctionnalités et à le mettre en oeuvre correctement.

  4. #4
    Expert éminent
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Points : 9 127
    Points
    9 127
    Par défaut
    Je ne comprends pas «resoudre le problème» faite des fonctions les appeler n'est pas un problème.
    Js ajoute juste la possibilité de les passer en paramètres.

    Methode comme pour tout dev decouper son projet en module en classe et en fonction

    Il n'y a rien de mystérieux, si tu as compris le principe. Tu fais tes fonctions et tu les appelles, ou tu les passe en arguments quand l'API que tu utilise attends une calback.

    A+JYT

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    204
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 204
    Points : 159
    Points
    159
    Par défaut
    Oui sauf qu'en JS justement, il faut tout découper en fonction pour gérer l'asynchrone et les nombreux callback, quand on n'a pas l'habitude, c'est vite galère et devient illisible.
    Le module async (y'en a d'autres) permet de faciliter cette gestion, permet de lancer des fonctions en parallèle, en série, en cascade, très facilement, c'est ce que je recherchais.

Discussions similaires

  1. Tuto pour application mobile
    Par kikouu dans le forum Mobiles
    Réponses: 0
    Dernier message: 26/01/2009, 16h00
  2. IDE pour applications mobiles
    Par sessime dans le forum EDI/Outils
    Réponses: 1
    Dernier message: 30/08/2008, 02h09
  3. API pour exploiter les informations des fichiers MANIFEST.MF ?
    Par darkmath dans le forum Eclipse Platform
    Réponses: 1
    Dernier message: 15/08/2008, 13h53
  4. Edi Gratuit pour applications mobiles
    Par Seth77 dans le forum Windows Mobile
    Réponses: 4
    Dernier message: 20/06/2008, 08h49

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo