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

JavaScript Discussion :

Promise et multiple callback


Sujet :

JavaScript

  1. #1
    Membre éclairé
    Homme Profil pro
    Symfony - CMS Wordpress - Zend
    Inscrit en
    Septembre 2011
    Messages
    306
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Symfony - CMS Wordpress - Zend
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2011
    Messages : 306
    Par défaut Promise et multiple callback
    Bonsoir,

    J'ouvre ce post qui a pour sujet les callback et promises

    je fais une iteration sur une requete HTTP comme ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    array.forEach((value, key) => {
                ...
           getMyHttpRequest(value, result => {
                      ...
                 array.set(key,result)
           }).then(() => writeArray(lang, translatedArray));
    après je dois appeler un fonction qui récupère le résultat de mes requête.

    dans ma fonction de requête http je fais appel à une Promises:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    var promise = new Promise((resolve, reject) => {
        https.get(options, (result) => {
       ....
        }
    });
    Voilà pour le code.
    Maintenant une explication:

    1. je réitère ma fonction de requête http
    2. je créer un promises afin d'attendre la fin pour recuperer le résutat
    3. les résultats me sont retourner dans le désordre
    4. du coup je me retrouve avec des valeurs vide car depandante des autres


    Comment attendre que le premier ai terminer avant de faire la requête suivante?
    Me conseillez-vous de faire un requête synchrone dans ce cas?
    Vu que je crée une nouvelle requête à chaque tours de boucle.
    Il m'est difficile de contrôlé l'ordre des retours?

  2. #2
    Expert confirmé
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 094
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 094
    Par défaut
    Ça serait dommage de faire les requêtes une par une alors que tu peux les faire en parallèle, simplement pour une question d’ordre.

    Je te conseille de lancer toutes tes requêtes dans ta boucle, de garder une référence sur chacune dans un tableau, qui te permettra de conserver leur ordre, et d’utiliser Promise.all pour agir une fois qu’elles ont toutes abouti.

    Ça va demander un peu de gymnastique mais je suis certain que c’est possible. Je te laisse chercher
    La FAQ JavaScript – Les cours JavaScript
    Touche F12 = la console → l’outil indispensable pour développer en JavaScript !

Discussions similaires

  1. callback / promise
    Par rioll dans le forum AngularJS
    Réponses: 4
    Dernier message: 28/05/2015, 11h11
  2. Multiple slideDown dans le callback d'un slideDown
    Par Olve.OnRollOver dans le forum jQuery
    Réponses: 2
    Dernier message: 16/04/2012, 17h22
  3. Réponses: 87
    Dernier message: 06/07/2011, 15h33
  4. Création multiple table paradox dans le code
    Par scarabee dans le forum C++Builder
    Réponses: 8
    Dernier message: 30/10/2002, 10h17
  5. Réponses: 6
    Dernier message: 25/03/2002, 21h11

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