Bonjour,
J'ai le code suivant dans un fichier userModel.js
Je veux que ma fonction load rende la main quand les callback sont appelés.
J'ai trouvé async qui me semblait résoudre ce problème mais ça ne fonctionne pas.
Mon code qui utilise userModel
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 var async = require('async'); var oio = require('orchestrate'); // Orchestrate oio.ApiEndPoint = ""; var db = oio(""); function UserModel() { } UserModel.prototype.load = function(key) { async.series([ function(callback) { db.get('Users', key) .then(function (res) { console.log("a") callback(null, res.body) }) .fail(function (err) { console.log("b") callback(err.body, null ) }); }, ], function (err, result) { console.log("err="+err); console.log("result"+result); }); }, module.exports = UserModel;
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 var myUserModel = new UserModel(db); myUserModel.load("loudo"); console.log("fin");
ça ne fonctionne pas car la fonctionne load rend la main avant que le callback soit appelé, j'ai l'impression que async ne fonctionne pas dans mon cas mais je ne sais pas pourquoi.
J'ai les messages dans l'ordre suivant :
fin => correspond à la sortie de la fonction load
a => appel du callback
err => callback async
result => callback async
Je veux que ma fonction load rende la main quand le traitement est terminée car je veux enchaîner plusieurs fonctions qui sont dépendantes les une des autres.
Merci pour votre aide.
Partager