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 に答える