Bonjour,
je me lance depuis peu dans la librairie jQuery et son object $.Deferred() et je me suis pris la tête pendant un moment avec la situation suivante :
J'ai une méthode asynchrone que j'appelle 3 fois de suite de manière chainée :
J'ai du sortir de la fonction les appels à val (lignes 2 à 5) car sinon val() me retournait toujours undefined.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 var u = $("#username").val(); var s = $("#server").val(); var p = $("#pwd").val(); var r = $("#recipient").val(); save("username",u) .then(function() {return save("server",s);}) .then(function() {return save("pwd",p);}) .then(function() {return save("recipient",r);}) .then($("#mycontent").load("main.html"));
Sauf que pour la fonction load (le pendant de la fonction save !!), j'ai ça :
avec dedans un bout de code de ce genre :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 load("username","") .then(function(){ return load("server",""); }) .then(function(){ return load("pwd",""); }) .then(function(){ return load("recipient",""); });
et là l'appel à val(xxx) fonctionne !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 search.then( function(result){ if (result.length > 0){ console.debug(_name + " found ! (" + result[0].json["value"] + ")"); $("#" + _name).val(result[0].json["value"]); def.resolve(); }
Ma question à deux balles est donc "quand la fonction val() est elle capable de voir mon arbre DOM ?" et les questions corollaires : quand retourne t elle "" ou undefined (cf. ma réponse du dessous)
Partager