質問

私は現在このコードを持っています:

handleSubmit: function(e)
{
    var to_bucket = this.$('.transaction_bucket').val();

    // Move all the transactions for this bucket to the selected bucket
    window.app.model.active_transactions.each(
        function(transaction)
        {
            transaction.set({bucket_id: to_bucket});
            transaction.save();
        }
    );

    this.model.destroy({success: function() { window.app.model.buckets.fetch();}});
}

すべての_.each ajaxトランザクションが発生した後にのみ破壊がトリガーされるように、これを変更するにはどうすればよいですか?以前のAJAXリクエストが1つある場合、成功を使用するだけです。パラメーターですが、ここではできません。

バックボーンでこれを行う正しい方法は何ですか?

役に立ちましたか?

解決 3

考えられる解決策の1つは、トランザクションをパラメーターとして取得し、サーバー側でジョブを行ったカスタムAPIメソッドを作成することです。これにより、HTTPSリクエストが削減され、パフォーマンスも向上します。

他のヒント

model.save リクエストで使用されているXHRオブジェクトを返します。 jQuery 1.5では、これらのオブジェクトはそうです 繰延オブジェクト 同期メカニズムの構築に使用できます。

例えば、

var to_bucket = this.$('.transaction_bucket').val(), 
    calls=[],
    mdestroy=this.model.destroy;

window.app.model.active_transactions.each(function (transaction) {
    transaction.set({bucket_id: to_bucket});
    calls.push(transaction.save());
});

$.when.apply($, calls).then(function () {
    mdestroy({success: function () {window.app.model.buckets.fetch();}});
});

私はバックボーンの経験はありませんが、そうするようなこの問題にアプローチします:

  • Active_Transactionsの数を取得します。
  • transaction.save()で、処理されたトランザクションの数(成功および/またはエラーコールバック)を確認します。Active_Transactionsの数と一致する場合は、モデルを破壊します。

既に処理されているトランザクションの数を追跡し、最後のコールバックで破壊をトリガーします。

handleSubmit: function(e)
{
  var to_bucket = this.$('.transaction_bucket').val();
  var remainingTransactions = window.app.model.active_transactions.length;
  var self = this;

  window.app.model.active_transactions.each(
    function(transaction)
    {
        transaction.save({bucket_id: to_bucket}, {
          success: function(){
            remainingTransactions -= 1;
            if(remainingTransactions < 1) {
              self.model.destroy({success: function() { window.app.model.buckets.fetch();}});
            }
          }
        });
    }
  );

}

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top