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 :

Fonctionnement d'un Callback, résultat inattendu


Sujet :

NodeJS

  1. #1
    Membre habitué
    Inscrit en
    Février 2004
    Messages
    303
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 303
    Points : 143
    Points
    143
    Par défaut Fonctionnement d'un Callback, résultat inattendu
    Bonjour,

    Je ne comprends pas la le résultat de ma sortie en fonction du code 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
    console.log('Début')
    getMember((member) => { console.log(member) })
    console.log('Fin')
     
    function getMember(next) {
        console.log('Phase 1')
        maBoucle((members) => { console.log(members) })
        console.log('Phase 2')
        next('Member 11')
        console.log('Phase 3')
        setTimeout(() => { next('Member 1') }, 1500)
    }
     
    function maBoucle(callback) {
        for (let index = 0; index < 1000000000; index++) {
            // Simulataion de la fonction "setTimeout"
        }
        callback('Callback de ma boucle')
    }

    J'obtiens le résultat suivant:

    Début
    Phase 1
    Callback de ma boucle
    Phase 2
    Membre 11
    Phase 3
    Fin
    Member 1
    Et je pensais avoir ce résultat:

    Début
    Phase 1
    Phase 2
    Membre 11
    Phase 3
    Fin
    Member 1
    Callback de ma boucle
    Est-ce un problème d'avoir utilisé la boucle for ?

    Merci d'avance pour votre aide !

    Yves

  2. #2
    Membre habitué
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2018
    Messages
    119
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Thaïlande

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2018
    Messages : 119
    Points : 168
    Points
    168
    Par défaut
    Bonjour,

    Une for loop (les autres type de boucle ne le sont pas non plus) n'est pas asynchrone, "index < 1000000000" block l'execution du process de nodejs, qui ensuite reprend. Donc tu as effectivement
    Phase 1
    Callback de ma boucle
    Phase 2

Discussions similaires

  1. [Débutant] Pause du programme tant qu'un résultat n'est pas bon
    Par manuscle dans le forum VB.NET
    Réponses: 3
    Dernier message: 25/04/2015, 14h15
  2. Réponses: 7
    Dernier message: 21/07/2014, 17h21
  3. Réponses: 1
    Dernier message: 26/03/2014, 16h40
  4. Réponses: 2
    Dernier message: 09/10/2009, 19h25
  5. Réponses: 4
    Dernier message: 11/11/2007, 15h00

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