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 :

Comment fonctionnent les callback


Sujet :

NodeJS

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2012
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2012
    Messages : 28
    Points : 18
    Points
    18
    Par défaut Comment fonctionnent les callback
    Bonjour à tous,

    j'essaye de comprendre comment fonctionne les callback, mais je n'y arrive pas

    exemple ci dessous

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
     
     
    function userAuth(id,callback){
    	pool.getConnection(function(err,connection){
    		var query = 'SELECT * FROM tblusers';
     
    		connection.query(query,function(err,rows){
    			connection.release();
    			if(!err){
    				return callback(rows);
    			}	
    		},callback);
    	},callback);
    }
     
    userAuth(0, function(callback){console.log(callback)}); // Ca fonctionne niquel
     
    //maintenant ma question est comment recuperer le retour dans une variable plutôt que l'afficher dans la console ?
    // un truc de ce genre
     
    var result = userAuth(0, function(callback){return callback;});
    j'en profite, à quoi sert les console.log() à part savoir ce qui ce passe ? parcque tout les tutos renvoies les resultats en console.log().
    Voila, si vous pouviez éclairer ma lanterne.

    Merci d'avance et bonne soirée

  2. #2
    Membre confirmé

    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    311
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 311
    Points : 545
    Points
    545
    Par défaut
    Salut !

    console.log est un helpeur permettant de tracer l’exécution du programme, en gros il sérialise en texte lisible tous les arguments passés en paramètres. L’objet console est disponible dans tous les navigateurs, c’est un outils essentiel pour programmer ! Sous node la sérialisation de console.log s’effectue sur le flux de sortie standard du processus, donc console.log est presque égale à process.stdout.write .
    Et OUI il est commun de s’attendre à ce que le résultat d’un processus s’effectue sur sa sortie standard

    Les callbacks te permettent de récupérer les résultats des actions asynchrones, or dans Node toutes action se doit d’être Asynchrone car l’environnement d’exécution de Node est nono-threaidé. Habituellement dans un environnement synchrone on récupère le résultat d’une action par le retour d’une fonction
    Version synchrone :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    try
    {
    	var res = Action(arg1,arg2);
    	console.log(res);
    }
    catch(err)
    {
    	console.error(err);
    }
    console.log('Action done!');
    Version Asynchrone :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Action(arg1,arg2,
    function(err, res)
    {
    	if(err)
    		console.error(err);
    	else
    		console.log(res);
    });
    console.log('Action done!');
    Dans la version Asynchrone on récupère le résultat en passant une fonction callback en tant que dernier arguments, le 1er argument de cet callback est toujours réservé a la gestion d’erreurs !
    J’ai volontairement glissé une coquille dans le code Asynchrone pour que tu comprenne bien que , dans un environnement asynchrone, le code ne reflète pas l’ordre d’exécution,
    car la sortie console serait, pour un résultat d’Action égale a 10, la suivante :
    ShaderElement : Bénéficier de l’accélération graphique simplement par une nouvelle balise HTML <shader>
    ODE.js : portage JavaScript du célèbre moteur physique 3D Open Dynamics Engine

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2012
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2012
    Messages : 28
    Points : 18
    Points
    18
    Par défaut
    Ok super explication ! C'est plus claire !

    Donc pour gérer le problème de l'asynchrone, il faut que je sois sur que la tache soit terminée pour pouvoir l'appeler c'est ça ?

  4. #4
    Membre expert
    Avatar de Golgotha
    Homme Profil pro
    Full-stack Web Developer
    Inscrit en
    Août 2007
    Messages
    1 386
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Full-stack Web Developer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2007
    Messages : 1 386
    Points : 3 532
    Points
    3 532
    Billets dans le blog
    1
    Par défaut
    Pas vraiment, tu ne va pas toi même t'assurer que la tâche est terminée. Le callback est appelé automatiquement, quand la tâche est terminée.
    Consultant et développeur full-stack spécialiste du Web
    faq jQuery - règles du forum - faqs web

Discussions similaires

  1. Définition de variables dans les Callback générés par le GUIDE
    Par tite_puce dans le forum Interfaces Graphiques
    Réponses: 2
    Dernier message: 28/11/2007, 19h18
  2. Réponses: 11
    Dernier message: 22/10/2007, 16h06
  3. Probleme avec les callback glutess!
    Par jojomillenium dans le forum OpenGL
    Réponses: 4
    Dernier message: 07/11/2006, 19h24
  4. Les callback et les classes
    Par koala01 dans le forum C++
    Réponses: 9
    Dernier message: 28/08/2006, 16h02
  5. Les callbacks
    Par xanagos dans le forum MFC
    Réponses: 5
    Dernier message: 18/05/2006, 15h10

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