在backbone.js中循环collection.fetch一定次数

时间:2012-10-06 20:34:38

标签: backbone.js coffeescript

我正在尝试获取集合x次,每次都递增一个计数器。我遇到的问题是,因为我需要在回调中呈现一个视图,并且由于.fetch()是异步的,所以我不能简单地执行一个javascript循环。我想以某种方式在success回调中告诉它再次调用自己,而不会陷入无限循环。

这就是我所拥有的:

@collection.fetch
      data: {q: letters, i: i}
      success:
        @renderList()

如何在x次之前运行i次,每次增加@renderList,等到@collection.fetch data: {q: letters, i: 1} success: @collection.fetch data: {q:letters, i:2} success: @collection.fetch data: {q:letters, i:3} 完成后才再次运行?

更新

所以,我正在取得进展 - 这似乎有效,但看起来很糟糕:

Uncaught TypeError: object is not a function 

此外,成功回调是在控制台中给我这个警告:

{{1}}

么?

1 个答案:

答案 0 :(得分:1)

也许尝试像这样的递归函数(这是唯一的例子):

recursiveFetch = (collection, successCallback, counter, data) ->
    if counter == 0
        successCallback()
        return
    data.i = counter
    collection.fetch
        data: data
        success: -> recursiveFetch(collection, successCallback, counter-1, data)

并将其称为:

recursiveFetch(@collection, => @renderList(), i, {q:letters})