Rückgabewert einer JQuery-Get-Callback-Funktion
-
26-12-2019 - |
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.
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)