我有一个可以同时进行多个fetch()es的分页集合。例如。用户可以点击“第1页”,看到“正在加载...”消息,然后在第1页加载之前单击“第2页”,这将触发另一个fetch()请求(显然向下发送不同的页面参数)。希望这是有道理的。我在View(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()
似乎工作......
答案 0 :(得分:2)
这就是它发生的原因(至少根据我的逻辑):
你肯定应该用事件处理这个问题,因为问题是由你的渲染函数进行提取和绘图引起的。