valore restituito da una funzione di callback jquery get
-
26-12-2019 - |
Domanda
Mi sarebbe molto utile se potessi aiutarmi a risolvere questa funzione:
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
Vorrei recuperare i risultati dalla callback in modo che il textParseQuery
la funzione potrebbe restituire un valore.
Soluzione 2
Ho scoperto IcedCoffeeScript Aiuta a semplificare il flusso di controllo asincrono con await
e defer
.Questo è quello che ho provato a raggiungere.La struttura del codice è come ho immaginato
# 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
. Altri suggerimenti
Il punto di una callback è asincrono, la tua risposta arriva nella callback, quindi devi gestire il resto dell'esecuzione dalla callback (ad esempio, il console.log res
sta per essere eseguito prima che venga chiamata la tua callback, poiché fa parte della stessa esecuzione sincrona della tua chiamata 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 aggiuntiva:la freccia grassa non è necessaria qui, è usata per ricondurre cosa this
si riferisce a, ma non stai facendo riferimento this
a tutti nella vostra richiamata.Se stai imparando coffee, la maggior parte degli editor avrà plugin / moduli per compilare rapidamente coffee in JS, quindi usalo per vedere in che cosa viene compilata una determinata sintassi coffee in JS (ad esempio, dai un'occhiata alla differenza tra l'utilizzo ->
e =>
quando si compila il caffè)