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 :

Fonction retournant plusieurs éléments en même temps alors que je souhaites qu'il retourne un seul par 10 sec


Sujet :

JavaScript

  1. #1
    Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2016
    Messages
    69
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Services à domicile

    Informations forums :
    Inscription : Janvier 2016
    Messages : 69
    Points : 64
    Points
    64
    Par défaut Fonction retournant plusieurs éléments en même temps alors que je souhaites qu'il retourne un seul par 10 sec
    Bonjour voila, je suis en train de développer un chatbot sous messenger de facebook.

    J'ai crée avec la fonction SetInterval(), une fonction qui me permet d'afficher une message toutes les 10 secondes.

    J'ai aussi crée un fichier JSON qui contient les contenus à afficher :
    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
     
    {  
       "tarte":[  
          {  
             "recette":"1",
             "ingredient1":"pomme",
             "ingredient2":"farine",
             "ingredient3":"sucre"
          },
          {  
             "recette":"2",
             "ingredient1":"banane",
             "ingredient2":"farine",
             "ingredient3":"sucre"
          },
          {  
             "recette":"3",
             "ingredient1":"fraise",
             "ingredient2":"farine",
             "ingredient3":"sucre"
          },
          {  
             "recette":"4",
             "ingredient1":"poire",
             "ingredient2":"farine",
             "ingredient3":"sucre"
          },
          {  
             "recette":"5",
             "ingredient1":"cerise",
             "ingredient2":"farine",
             "ingredient3":"sucre"
          },
          {  
             "recette":"6",
             "ingredient1":"framboise",
             "ingredient2":"farine",
             "ingredient3":"sucre"
          },
          {  
             "recette":"7",
             "ingredient1":"raisin",
             "ingredient2":"farine",
             "ingredient3":"sucre"
          },
          {  
             "recette":"8",
             "ingredient1":"datte",
             "ingredient2":"farine",
             "ingredient3":"sucre"
          },
          {  
             "recette":"9",
             "ingredient1":"kiwi",
             "ingredient2":"farine",
             "ingredient3":"sucre"
          },
          {  
             "recette":"10",
             "ingredient1":"ananas",
             "ingredient2":"farine",
             "ingredient3":"sucre"
          }
       ]
    }

    J'aimerais juste que ma fonction en bas m'affiche un message avec un des différents élements ci dessus par 10 secondes voila comment j'ai coder :

    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
     
    intervalMessage = setInterval(function () { 
    				let fs = require("fs");
    				let contents = fs.readFileSync("tarte.json");
    				let jsonContent = JSON.parse(contents);
     
    				for (i=0;i<10;i++){
    				let recette = jsonContent.tarte[i].recette				
    				let ingredient1 = jsonContent.tarte[i].ingredient1
    				let ingredient2 = jsonContent.tarte[i].ingredient2
    				let ingredient3 = jsonContent.tarte[i].ingredient3
     
    				text= "Bonjour, voici la recette de la tarte numero :"+recette+" , elle est compose de "+ingredient1+", de  "+ingredient2+" et de "+ingredient3+"."
    				sendTextMessage(sender,text.substring(0, 200))
     
    				}
    				}, 10000)

    Mais ça me donne les 10 recettes d'un coup chaque 10 seconde.

    Merci de m'eclairer sur mon erreur.


  2. #2
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    16 959
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 16 959
    Points : 44 112
    Points
    44 112
    Par défaut
    Bonjour,
    Merci de m'eclairer sur mon erreur.
    c'est ce que tu demandes au travers de ta boucle, tout est envoyer dans le même setInterval.

    il te suffit de n'afficher qu'un élément et à chaque affichage faire avancer ton indice dans le tableau.

  3. #3
    Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2016
    Messages
    69
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Services à domicile

    Informations forums :
    Inscription : Janvier 2016
    Messages : 69
    Points : 64
    Points
    64
    Par défaut
    Citation Envoyé par NoSmoking Voir le message
    il te suffit de n'afficher qu'un élément et à chaque affichage faire avancer ton indice dans le tableau.
    Comment ça ?

    Je suis encore un développeur débutant.

  4. #4
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    16 959
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 16 959
    Points : 44 112
    Points
    44 112
    Par défaut
    Pour commencer, pourquoi relire le fichier à chaque setInterval, il change en cours ?
    A partir de tes données, tu devrais avoir quelque chose comme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    var str = '{ "tarte":[ { "recette":"1", "ingredient1":"pomme", "ingredient2":"farine", "ingredient3":"sucre" }, { "recette":"2", "ingredient1":"banane", "ingredient2":"farine", "ingredient3":"sucre" }, { "recette":"3", "ingredient1":"fraise", "ingredient2":"farine", "ingredient3":"sucre" }, { "recette":"4", "ingredient1":"poire", "ingredient2":"farine", "ingredient3":"sucre" }, { "recette":"5", "ingredient1":"cerise", "ingredient2":"farine", "ingredient3":"sucre" }, { "recette":"6", "ingredient1":"framboise", "ingredient2":"farine", "ingredient3":"sucre" }, { "recette":"7", "ingredient1":"raisin", "ingredient2":"farine", "ingredient3":"sucre" }, { "recette":"8", "ingredient1":"datte", "ingredient2":"farine", "ingredient3":"sucre" }, { "recette":"9", "ingredient1":"kiwi", "ingredient2":"farine", "ingredient3":"sucre" }, { "recette":"10", "ingredient1":"ananas", "ingredient2":"farine", "ingredient3":"sucre" } ] }';
    // gestion des données
    var data = JSON.parse(str);
    var ind = 0;
    var max = data.tarte.length;
    // lancement de l'affichage
    var iTimer = setInterval(function () {
        // affichage à faire
        console.log(data.tarte[ind]);
        // on recommence au 1st
        ind = (ind + 1) % max;
    }, 1000);
    il ne te reste plus qu'à adapter, mais le principe est là

  5. #5
    Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2016
    Messages
    69
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Services à domicile

    Informations forums :
    Inscription : Janvier 2016
    Messages : 69
    Points : 64
    Points
    64
    Par défaut Merci Nosmoking
    J'ai compris je vais essayer de l'adapter si ca fonctionne je mettrai le code merci encore

  6. #6
    Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2016
    Messages
    69
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Services à domicile

    Informations forums :
    Inscription : Janvier 2016
    Messages : 69
    Points : 64
    Points
    64
    Par défaut Merci ca fonctionne
    Merci Nosmoking ca fonctionne super bien.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Plusieurs fonctions qui s'exécutent au même temps
    Par saidus dans le forum API, COM et SDKs
    Réponses: 2
    Dernier message: 07/07/2008, 03h42
  2. Quels sont les moyens pour encoder plusieurs éléments en même temps
    Par finalfx dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 12/01/2007, 00h00
  3. Rendre visible / invisible plusieurs éléments en même temps
    Par Bluespike62 dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 23/01/2006, 17h43
  4. lecture de plusieurs port en même temps
    Par manaboko dans le forum Langage
    Réponses: 3
    Dernier message: 06/10/2005, 15h26
  5. Réponses: 9
    Dernier message: 17/04/2004, 16h32

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