私のアプリでは、サーバーから取得したコレクションを含むビューをテーブルとして表示しています。ユーザーがこのコレクションをフィルタリングして、テキスト ボックスに検索文字列を書き込めるようにしたいと考えています。
問題は、キーストロークごとに keyup イベントが発生することです。無駄なリクエストでサーバーが過負荷にならないように、これを回避したいと考えています。そこで、アンダースコアのスロットル関数を使用することを考えましたが、機能する方法で実装できません。
events: {
'keyup #filter' : 'filter_collection'
}
filter_collection: function(e) {
var el, throttled, value;
el = e.currentTarget;
value = $(el).val();
this.collection.server_api.filter = value;
throttled = _.throttle(_.bind(this.update_collection, this), 5000);
throttled();
}
update_collection: function() {
var promise, self;
self = this;
promise = this.collection.fetch();
$.when(promise).then(function() {
self.collection.pager();
});
}
このようにして、キーストロークごとに update_collection 関数が呼び出されthrottle
ます。私も試してみましdebounce
たが、待機時間の後にすべてのリクエストが発生するだけです。私は何が欠けていますか?
どんな助けでも大歓迎です、ありがとう!