Aller au contenu

Léger Problème Lua


Indyana

Messages recommandés

Bonjour,

Ou je suis trop nul ou je suis trop fatigué, mais pourriez vous m'indiquer comment on peut utiliser les éléments de la variable "response" en dehors de la fonction et de la requete http? J'obtiens un objet nul dans mon print...

 

Merci d'avance!

local http = net.HTTPClient();
http:request('http://127.0.0.1:11111/api/devices/57', {
options = {
method = 'GET'
},
success = function(response)      
      fibaro:debug("OK") end,
error = function(err) fibaro:debug("Error: " ..err) end
})

print(response.data)
Lien vers le commentaire
Partager sur d’autres sites

Cela est logique, il faut prendre en compte le fait que net.HTTPClient travail en asynchrone, le callback succes peut-être déclenché à  n'importe quel moment, par exemple plusieurs seconde après ton print.

 

C'était juste un rappel car ici ce n'est pas ton problème: En fait, tu ne peux pas utiliser l’objet response en dehors de la fonction success ;)

Lien vers le commentaire
Partager sur d’autres sites

Merci, j'ai eut peur d'être devenu complètement nul en prog.

L'objet de cette scène est de mettre àjour le paramètre d'un module. La maj fonctionne bien, par contre il écrase les autres paramètres à0/blanc, du coup j'ai besoin de récupérer ces valeurs avant de faire la maj, c'était l'objet de ce petit script. Si j'ai bien comprit, je vais donc devoir plus ou moins imbriquer mes requêtes/fonctions (ce dont j'ai horreur en fait).

Lien vers le commentaire
Partager sur d’autres sites

Non, pas d'imbrication, il suffit de mettre ton code "métier" dans ton callback (fonction success). Si tu n'es pas àl'aise avec le fonctionnement asynchrone c'est le moyen le plus sûr afin de ne pas t’arracher les cheveux :)

De plus dans ton exemple, le paramètre response n'est valable que dans la fonction success (response est définie dans le corp de la fonction).

Lien vers le commentaire
Partager sur d’autres sites

×
×
  • Créer...