は、私はあなたが後バックボーン - ビューが
を切り替えることができますサブビューAJAX呼び出しがメインビューに「成功」のdiv、成功するとフェッチを持っている箱を持っている主なビューを持って除去した後に遅延実行を防ぎます示されています。
私が直面している問題は、サブビュー間を切り替えると、以前のビューのフェッチの延期された約束がまだ実行され、「成功」divが表示されることです。
これは私のコードです:
this.model.fetch().done(function() {
$('#success').show();
});
onChangeSubview: function() {
this.subview.unbind();
this.subview.remove();
}
このSOそうのような)abort-ajax-requests-using-jqueryはあなたが延期にポインタを格納し、(中止を呼び出すことによって、それを止めることができますと言う質問:
var fetchXhr = this.model.fetch().done(function() {
$('#success').show();
});
onChangeSubview: function() {
fetchXhr.abort();
}
私はいくつかを持っていますそれぞれのサブビューをフェッチし、いくつかはある間隔で繰り返されます。つまり、すべてのフェッチ要求を格納し、それぞれの要求を中止する必要があります。
遅延機能が実行されないようにするには、より良い方法がありますか? 例:サブビューが削除されたかどうかを確認する何らかのチェック、またはすべての延期された約束をバインド解除する関数?
大声で考えてみましょう。サブビューのすべてのフェッチをリストに追加してからonChangeSubviewを追加して、それらを反復処理して中止を実行できますか? 'this.fetches.forEach(function(fetchXhr){fetchXhr.abort();});'(または '_.invoke(this.fetches、 'abort');'アンダースコアのようにしたい場合)。この機能を潜在的にベースビューに配置して拡張することもできますので、その一部を抽象化することができます。 – Dymos
@Dymos +1。あなたはあまりにも控えめですが、それはコメントではなく実際の答えです;) – hashchange
hahaありがとう:-)私はそれを後世の答えとして追加します。 – Dymos