0

私はcoffeescriptで次のコードを持っています

getSection = (url) ->
  req = $.getJSON url
  return req.success (data) ->
    data.section

また、

getSection = (url) ->
  req = $.getJSON url
  req.success (data) ->
    data.section

data.section私は機能のために戻るつもりでしたgetSection。しかし、それは常に別のオブジェクトを返しています(おそらくresponse/ajaxオブジェクト)。この内部関数から data.section の値を強制的に返すにはどうすればよいですか?

前もって感謝します?

4

1 に答える 1

3

$.getJSONは AJAX 呼び出しであり、Aは非同期を表すため、サーバーから応答getSectionが返される前に返されます。基本的に、同期 (つまり、非非同期) 呼び出しに置き換えて実行しない限り、戻る$.getJSONことはできません。ただし、同期呼び出しは悪であり、推奨されていないため、使用しないでください。getSectiondata.section$.getJSON$.ajax

通常の解決策は、次のようにコールバックを渡すことgetSectionです。

getSection = (url, callback) ->
  req = $.getJSON url
  req.success (data) ->
    callback(data.section)

次に、戻り値callbackで何かをしようとするのではなく、ロジックを入れます。getSection

それが返され、CoffeeScript関数が最終値を返すため、あなたgetSectionが返されます。reqreq.success

于 2012-08-03T07:26:07.967 に答える