我有一个分页集合,可以同时进行多个 fetch()es。例如,用户可以单击“第 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 页的成功回调最终会被调用两次(因此总共调用了三个 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()
似乎工作...