複数の fetch() を同時に作成できるページ分割されたコレクションがあります。たとえば、ユーザーが「ページ 1」をクリックすると、「読み込み中...」というメッセージが表示され、ページ 1 が読み込まれる前に「ページ 2」をクリックすると、別の fetch() リクエストが発生します (明らかに別のページ パラメータが送信されます)。うまくいけば、それは理にかなっています。ビュー(Coffeescript)内でこれを処理します:
render: ->
if @collection.hasPage()
# render the view
else
el.append '<h3>Loading...</h3>'
@collection.fetch
success: (coll, resp) => @render()
ただし、ページ 1 をクリックし、ページ 1 が読み込まれる前にページ 2 をクリックすると、ページ 1 の成功コールバックが 2 回呼び出されます (つまり、全体で 3 回の success() 呼び出し)。success() コールバックは、ページ 1、ページ 2、ページ 1 の順序で呼び出されます。
なぜこうなった?これをイベントで処理する必要がありますか?複数の fetch()es を同時に許可すべきではありませんか? 助けてくれてありがとう。
アップデート
これが私が今やっている方法です:
initialize: ->
@page = @collection.page
render: ->
if @collection.hasPage(@page)
#render
else
el.append 'Loading...'
@collection.fetch
success: (coll,resp) =>
# do some stuff with coll
if @page == @collection.page
@render()
動作するようです...