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.