coffeescript renvoie toujours l’object de réponse

j’ai les codes suivants dans coffeescript

getSection = (url) -> req = $.getJSON url return req.success (data) -> data.section 

ou,

 getSection = (url) -> req = $.getJSON url req.success (data) -> data.section 

data.section intention de retourner data.section pour la fonction getSection . mais il retourne toujours un autre object (probablement l’object response / ajax). comment puis-je forcer à renvoyer les valeurs dans data.section à partir de cette fonction interne?

Merci d’avance?

$.getJSON est un appel AJAX et A signifie asynchrone; ainsi, getSection sera renvoyé avant que $.getJSON reçoive sa réponse du serveur. En getSection ne peut pas renvoyer data.section moins de remplacer $.getJSON par $.ajax et d’effectuer un appel synchrone (c’est-à-dire non asynchrone); Cependant, les appels synchrones sont diaboliques et sont déconseillés. Par conséquent, vous ne devriez pas les utiliser.

La solution habituelle consiste à passer un rappel à getSection :

 getSection = (url, callback) -> req = $.getJSON url req.success (data) -> callback(data.section) 

et ensuite vous mettez votre logique dans le callback plutôt que d’essayer de faire quelque chose avec la valeur de retour getSection .

Votre getSection renvoie req car c’est ce req.success retourne req.success et les fonctions CoffeeScript renvoient leur valeur finale.