valor de retorno de uma jquery obter a função de chamada de retorno
-
26-12-2019 - |
Pergunta
Seria muito útil para mim se você poderia me ajudar a corrigir esta função:
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
Eu gostaria de obter os resultados do retorno de chamada de modo que o textParseQuery
a função pode retornar um valor.
Solução 2
Eu descobri IcedCoffeeScript ajuda a agilizar o assíncrono de fluxo de controle com await
e defer
.Isso é o que eu tenho tentado fazer.A estrutura de código é como eu imaginei ele
# 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
Outras dicas
O ponto de chamada de retorno é assíncrona, a resposta vem em retorno, de modo que você precisa para lidar com o resto de execução de retorno de chamada (por exemplo, o console.log res
para executar antes de seu retorno de chamada é chamada, já que é parte da mesma execução síncrona de sua chamada 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:a gordura seta é desnecessário, aqui, é usado para religar o que this
refere-se, mas você não está fazendo referência a this
em tudo em seu retorno de chamada.Se você está aprendendo a café, a maioria dos editores terá plugin/módulos rapidamente compilar o café para JS, então use-a para ver o que um determinado café de sintaxe compila para javascript (por exemplo, dê uma olhada na comparação entre o uso de ->
e =>
quando você compilar o seu café)