1

私のcoffeescript/backboneアプリには次のものがあります。問題は、「each」関数が完了する前に(つまり、各コレクションに対してcreate()を実行する前に)console.logを実行していることです。私が知りたいのは、作成が完了したらconsole.logを実行するために、私が気付いていないタイプの成功コールバックがあるかどうかです。前もって感謝します!

wishlist.each (model) ->
  id = model.get('id')
  lineitems.create({product_id: id})
console.log "do this when finished!"
4

1 に答える 1

1

あなたは混乱していると思います。sのeach関数Backbone.Collectionは非同期ではなく、AJAX呼び出しをトリガーしません。このeach関数は、実際には非同期機能に関係のないアンダースコアから取得されます。

データをフェッチする非同期AJAX呼び出しが呼び出されfetch、成功/エラーコールバックがあります。

wishlist.fetch
  success: -> console.log "success"
  error: -> console.log "error"

編集

OK、console.logすべての作成が完了した後に実行します。まず第一に、私が言ったことfetchは創造について真実です。successコールバックを追加できerrorます。

lineitems.create {product_id: id}, 
    {success: @create_success, error: @create_error}

すべてのカウントをインクリメントし、すべてのコールバックcreateのカウントをデクリメントすることを検討します。作成が完了し、カウントが0に達すると、すべての作成が処理され、コールバックできます。successerror

于 2012-08-01T00:29:50.283 に答える