1

我正在尝试获取收集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 

建议?

4

1 回答 1

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})
于 2012-10-06T21:29:25.530 回答