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.

È stato utile?

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è)

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top