Frage

Es wäre sehr nützlich für mich, wenn Sie mir bei der Behebung dieser Funktion helfen könnten:

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

Ich möchte die Ergebnisse des Rückrufs abrufen, damit die textParseQuery Funktion könnte einen Wert zurückgeben.

War es hilfreich?

Lösung 2

Ich habe entdeckt IcedCoffeeScript Hilft dabei, den asynchronen Kontrollfluss zu optimieren await Und defer.Das ist es, was ich zu erreichen versucht habe.Die Codestruktur ist so, wie ich sie mir vorgestellt habe

# 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

Andere Tipps

Der Sinn eines Rückrufs besteht darin, dass er asynchron ist. Ihre Antwort kommt im Rückruf, sodass Sie den Rest der Ausführung vom Rückruf aus erledigen müssen (z. B. die console.log res wird ausgeführt, bevor Ihr Rückruf aufgerufen wird, da es Teil derselben synchronen Ausführung Ihres Ajax-Aufrufs ist).

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

Zusätzliche Anmerkung:Der dicke Pfeil ist hier unnötig, er wird verwendet, um was neu zu binden this bezieht sich auf, aber Sie beziehen sich nicht darauf this überhaupt in Ihrem Rückruf.Wenn Sie Kaffee lernen, verfügen die meisten Editoren über Plugins/Module, mit denen Sie Kaffee schnell in JS kompilieren können. Verwenden Sie diese also, um zu sehen, wie eine bestimmte Kaffeesyntax in JS kompiliert wird (werfen Sie beispielsweise einen Blick auf den Unterschied zwischen der Verwendung von Kaffee). -> Und => wenn Sie Ihren Kaffee zusammenstellen)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top