Возвращаемое значение из jquery get callback-функции

Было бы очень полезно для меня, если бы вы могли помочь мне исправить эту функцию:

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 помогает оптимизировать поток асинхронного управления с await а также defer, Это то, что я пытался достичь. Структура кода - это то, как я это изобразил

# 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 на все в вашем обратном вызове. Если вы изучаете кофе, у большинства редакторов есть плагин / модули для быстрой компиляции кофе в JS, так что используйте его, чтобы увидеть, с чем компилируется данный синтаксис кофе в JS (например, посмотрите на разницу между использованием -> а также => когда собираешь свой кофе)

Другие вопросы по тегам