возвращает значение из функции обратного вызова jquery get
-
26-12-2019 - |
Вопрос
Мне было бы очень полезно, если бы вы помогли мне исправить эту функцию:
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
Я хотел бы получить результаты обратного вызова, чтобы textParseQuery
функция может возвращать значение.
Решение 2
Я обнаружил icedcoffeeScript помогает оптимизировать асинхронный контрольный поток с генеракодицетагкодом и генеракодицетагкодом.Это то, что я пытался достичь.Структура кода - это то, как я изобразил его
# 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
. Другие советы
Смысл обратного вызова в том, что он асинхронный, ваш ответ приходит в обратном вызове, поэтому вам нужно обработать остальную часть выполнения из обратного вызова (например, console.log res
будет выполняться до вызова вашего обратного вызова, поскольку это часть того же синхронного выполнения вашего 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
Дополнительное примечание:жирная стрелка здесь не нужна, она используется для повторной привязки того, что this
ссылается на, но вы не ссылаетесь this
вообще в вашем обратном вызове.Если вы изучаете coffee, у большинства редакторов будут плагины / модули для быстрой компиляции coffee в JS, поэтому используйте это, чтобы увидеть, как данный синтаксис coffee компилируется в JS (например, взгляните на разницу между использованием ->
и =>
когда вы готовите свой кофе)