Bonjour,
J'essaye de réaliser une enchaînement de fonctions en série avec l'aide de async. J'ai suivi un petit tutoriel qui m'a permit d'arriver à un résultat ... qui ne correspond pas à mes attentes. J'ai fait un petit test coté serveur dont voici le code :
Toutes les fonctions fonctionnent. Ce que je veux, c'est que findUsers soit lancé quand findParam est terminé, et que cette dernière passe les param en paramètre de la deuxième fonction.Code:
1
2
3
4
5
6
7
8
9
10 app.get('/findTests', function(req, res, callback){ var user = findUserBySession(req.sessionID); async.waterfall( [ findParam(user.key, callback), findUsers(arg1, arg2, callback) ]); res.send(200); });
Le code des deux fonctions :
Ma stacktrace me retourne :Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 function findParam(userKey,callback){ console.log("Je cherche les params "+userKey); params.get(userKey, function(err, result, key) { var param = result; param.key=key; console.log("findParam "+param); callback(err, userKey, param); }); console.log("EOF"); } function findUsers(userKey,param, callback){ console.log("Je cherche les users "+userKey); console.log("Param "+param); users.get(userKey, function(err, result, key) { var user = result; user.key=key; console.log("user "+user); callback(err, user, param); }); }
Je comprend donc que findUsers est lancée avant que l'appel en base dans findParam ne soit terminé. D'où mon erreur.Citation:
Je cherche les params 3egek8ek
EOF
ReferenceError: arg1 is not defined
at Object.totRes (/home/pi/Workspace/homy/serveur.js:282:14) <- La ligne 282 correspond à l'appel de findUsers dans le waterfall
at next_layer (/home/pi/Workspace/homy/node_modules/express/lib/router/route.js:103:13)
at Route.dispatch (/home/pi/Workspace/homy/node_modules/express/lib/router/route.js:107:5)
at c (/home/pi/Workspace/homy/node_modules/express/lib/router/index.js:195:24)
at Function.proto.process_params (/home/pi/Workspace/homy/node_modules/express/lib/router/index.js:253:12)
at next (/home/pi/Workspace/homy/node_modules/express/lib/router/index.js:189:19)
at next (/home/pi/Workspace/homy/node_modules/express/lib/router/index.js:166:38)
at next (/home/pi/Workspace/homy/node_modules/express/lib/router/index.js:166:38)
at next (/home/pi/Workspace/homy/node_modules/express/lib/router/index.js:166:38)
at next (/home/pi/Workspace/homy/node_modules/express/lib/router/index.js:166:38)
findParam [object Object]
Qu'ai je fais de faux ???
Merci d'avance de votre aide !
