valor de retorno de un get de jquery función de devolución de llamada
-
26-12-2019 - |
Pregunta
Sería muy útil para mí si usted me podría ayudar a arreglar esta función:
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
Me gustaría obtener los resultados a partir de la devolución de llamada para que el textParseQuery
la función puede devolver un valor.
Solución 2
He descubierto IcedCoffeeScript ayuda a agilizar el asíncrona de control de flujo con await
y defer
.Esto es lo que he tratado de lograr.La estructura del código es como lo de la foto es
# 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
Otros consejos
El punto de una devolución de llamada es asincrónica, su respuesta viene en la devolución de llamada, por lo que necesita para manejar el resto de la ejecución de la devolución de llamada (por ejemplo, la console.log res
se va a ejecutar antes de su devolución de llamada, ya que es parte de la misma de ejecución sincrónico de su llamada 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
Nota adicional:la grasa de la flecha es innecesario aquí, se utiliza para volver a enlazar lo que this
se refiere, pero que no son de referencia this
en su devolución de llamada.Si estás aprendiendo el café, la mayoría de los editores se han plugin/módulos para compilar rápidamente café de JS, así que usa eso para ver lo que un determinado café sintaxis compila en JS (por ejemplo, echar un vistazo a la diferencia entre el uso de ->
y =>
cuando se compila el café)