Bonjour,

Encore un petit problème sous jQuery avec les defered/resolv, etc...

Soit une function "get_infos" qui récupère des informations provenant d'une requête ajax :
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
maClasse.get_infos=function() {

	this.dfd_get_infos=jQuery.Deferred();
	this.get_infosPromise= this.dfd_get_infos.promise();

	var _self=this;

	jQuery.ajax(
		url: ...,
		data: ...,
		success:function(){
			NAS_CRYPTO=data[0], // initialisation du mode de cryptage du serveur
			...
			_self.dfd_get_infos.resolve(); // On résoud
		},
		error: function(){
			...
			_self.dfd_get_infos.reject(); // On rejette
		},
		...
	)
	return this.get_infosPromise; // On retourne le promise
}
Ces informations sont de plusieurs natures et peuvent être publiques (ie. modifiables au sein de ma "classe", donc finalement des propriétés de maClasse) ou privées (ie. non modifiables au sein de la classe, juste "visualisables"). Pour ces dernières, il faut donc que je donne un accès à ces valeurs par des functions..., par exemple :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
	maClasse.get_crypto = function () { // un cryptage est actif sur le serveur ou non... 

		// On attend un premier retour de get_infos
		maClasse.dfd_get_infos.done(function() { /
			return NAS_CRYPTO; // NAS_CRYPTO est une variable privée dans le namespace en cours, et préalablement initialisée par get_infos (voir plus haut), ceci fonctionne très bien, mais "trop tard"
		});

		return NAS_CRYPTO; // Hé oui, c'est là que ça ne va pas :-(

	};
Cette fonction est appelée par quelque chose qui ressemble à :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
 
// Instanciation 
toto=maClasse;
toto.get_infos(); // requête asynchrone
// Y'a t'il un cryptage en cours
cryptage=toto.get_crypto(); // retour "undefined" car le retour de get_infos au dessus n'est pas encore finalisé...
...
Pour dire les choses simplement il faudrait que je demande à la fonction maClasse.get_crypto d'attendre le retour de la requête "get_infos" (donc le moment où "maClasse.dfd_get_infos.done()) AVANT de renvoyer la variable "NAS_CRYPTO"... Donc que je "l'asservisse"...

Je n'ai pas pu trouver d'exemple ou de moyen de faire cela, ce qui me fait même douter du bien fondé de la démarche...

Merci pour votre aide...

Bonne journée