Objet promise dans un module commençant par define{etc.
Bonjour,
Voici ma question:
J'ai créé le module suivant que j'appelle monModule.js:
Code:
1 2 3
| define(["dojo/request/xhr","dojo/json"],function(xhr,json){
xhr("users.json",{handleAs:"json"}).then(function(data){return data;},function(err){console.log("Erreur ",err);});
}); |
Dans un autre module, je sollicite ce module par un require de la manière suivante:
Code:
1 2 3
| require(["monModule"],function(monModule){
console.log(monModule);
}); |
J'avais cru comprendre que la forme require résolvait toutes les dépendances et, en particulier, résolvait tous les objets promise des modules appelés. Et donc je m'attendais à voir les données users.json éditées par le console.log(monModule) du module appelant. Il n'en est rien: console.log(monModule) renvoie un objet vide.
Je n'ai pas trouvé d'autre solution que de faire: return xhr("users.json".... depuis monModule et c'est donc un objet promise que je reçois dans mon script appelant. Je dois lui appliquer ensuite le callback: .then(function(data){.... }.
C'est précisément le .then... dans le programme appelant que j'aurais voulu éviter. Est-ce possible sans utiliser le DOM comme le font tous les exemples fournis par le site officiel DOJO?