Question

Cela me serait très utile si vous pouviez m'aider à corriger cette fonction :

textParseQuery = (txtSnippet) ->    
    queryUrl = "http://localhost:8083/txtParse/#{txtSnippet}"
    console.log queryUrl
    callback = (response) => 
        parsed = $.parseJSON response
        companies = parsed.map (obj) -> new Company(obj.name, obj.addr)
        companies
    res = $.get queryUrl, {}, callback
    console.log res

Je voudrais récupérer les résultats du rappel afin que le textParseQuery la fonction pourrait renvoyer une valeur.

Était-ce utile?

La solution 2

j'ai découvert Café glacéScript aide à rationaliser le flux de contrôle asynchrone avec await et defer.C’est ce que j’ai essayé de réaliser.La structure du code est telle que je l'imaginais

# Search for 'keyword' on twitter, then callback 'cb'
# with the results found.
search = (keyword, cb) ->
  host = "http://search.twitter.com/"
  url = "#{host}/search.json?q=#{keyword}&callback=?"
  await $.getJSON url, defer json
  cb json.results

Autres conseils

L'intérêt d'un rappel est qu'il est asynchrone, votre réponse arrive dans le rappel, vous devez donc gérer le reste de l'exécution à partir du rappel (par exemple, le console.log res va s'exécuter avant que votre rappel ne soit appelé, car il fait partie de la même exécution synchrone de votre appel ajax).

textParseQuery = (txtSnippet) ->    
    queryUrl = "http://localhost:8083/txtParse/#{txtSnippet}"
    callback = (response) -> 
        parsed = $.parseJSON response
        companies = parsed.map (obj) -> new Company(obj.name, obj.addr)

        # proceed from here
        console.log companies
    $.get queryUrl, {}, callback

Note supplémentaire:la grosse flèche n'est pas nécessaire ici, elle sert à relier quoi this fait référence, mais vous ne faites pas référence this du tout dans votre rappel.Si vous apprenez le café, la plupart des éditeurs auront des plugins/modules pour compiler rapidement le café en JS, alors utilisez-les pour voir à quoi correspond une syntaxe de café donnée en JS (par exemple, jetez un œil à la différence entre l'utilisation de -> et => quand tu prépares ton café)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top