Bonjour,

Je suis actuellement en train de continuer le projet de quelqu'un qui utilise les bibliothèques "async" et "request" .
Afin de factoriser au maximum, j'ai sorti du code redondant qui se trouvait dans un async.waterfall pour le mettre dans une fonction à part).
Voici en gros mon cas :
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
 
...
var request = require("request");
var async = require("async");
var config = require('../config.json');
 
startwaterfall(id);
 
function startwaterfall(id){
	async.waterfall([
			function 1(){...},
			function 2(){...},
			function 3(){
				var monParametre = 1;
				//Cette variable ne sera définie qu'après mon render, pourquoi ?
				var maVariable = horsDuWaterfall(monParametre);
			}
		], function (err,result){
			res.render(...);
		}
	);
}
 
function horsDuWaterfall(monParametre){
	//Récupération des informations du contact via l'api REST
	console.log("Entrée dans la fonction horsDuWaterfall");
	request.get(config.url_server_data + "contact/" + idContact, function (error, result, body) {
	    if (!error) {
	        var contactResultObj = JSON.parse(body);
	        return contactResultObj;
	    } else {
	        console.log("Erreur lors de la récupération du contact de chargement");
	        return null;
	    }
	});
}
Mon premier console.log s'affiche AVANT le render, le request.get s'execute APRES le render, je ne comprends pas pourquoi.
Et si je ne factorise pas mon code, ça fonctionne, sauf que je veux éviter de me retrouver avec le même code dans 8 fonctions...
Merci par avance pour votre aide, Jesus_Cry