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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : 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 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.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 !
Partager