Nodejs - Loop Callbacks

Fermé
shoxxdj - Modifié par Whismeril le 11/06/2015 à 07:19
Xavierdu34 Messages postés 216 Date d'inscription lundi 2 décembre 2013 Statut Membre Dernière intervention 10 octobre 2016 - 11 juin 2015 à 19:51
Bonjour,

Je rencontre un problème, disons de logique avec Node js.
N'étant pas très habitué à ce genre de programation..

Ce que je veux faire :
Apeller une API avec X valeurs contenues dans un tableau devices.
Récupérer les résultats de cette api dans un tableau que je parserais dans ma vue index.ejs.
app.get('/',function(req,res){
 running_images=[];
  for(var i=0;i<devices.length;i++)
  { 
   request('appelapi',function(error,response,body)
   {
    if(!error && response.statusCode==200)
    {
     running_images.push(response);
    }
   });
  }
  res.render('index.ejs',{res:running_images});


Cependant avec un tel code, la variable running_images est vide lorsqu'elle est passée à la vue ( le temps d'appel de cette api est assez long .. )
j'ai cru comprendre qu'il y avais une histoire de callbacks. mais je n'arrive pas à la mettre en pratique dans mon cas ...

Je vous remercie d'avance :D



EDIT: Précision du langage dans la coloration syntaxique.
A voir également:

1 réponse

Xavierdu34 Messages postés 216 Date d'inscription lundi 2 décembre 2013 Statut Membre Dernière intervention 10 octobre 2016 21
Modifié par Whismeril le 11/06/2015 à 07:19
Bonjour,

peut être une idée du genre :

app.get('/',function(req,res){
 running_images=[];
  for(var i=0;i<devices.length;i++)
  { 
   request('appelapi',function(error,response,body)
   {
    if(!error && response.statusCode==200)
    {
     running_images.push(response);
    }
   });
if(devices.length == i) { res.render('index.ejs',{res:running_images}); }
  }
 
0
Utilisateur anonyme
11 juin 2015 à 07:19
EDIT: Précision du langage dans la coloration syntaxique.
0
Xavierdu34 Messages postés 216 Date d'inscription lundi 2 décembre 2013 Statut Membre Dernière intervention 10 octobre 2016 21
11 juin 2015 à 19:51
Et je devais être fatigué hier soir, la ligne 12 c'est plutôt :
if(devices.length == i-1) { res.render('index.ejs',{res:running_images});
0