Ответ 1
Из Ember 1.0.0 вы можете получить отключенный наблюдатель в любом представлении или объекте, обернув вызов debounce внутри другой функции, которая наблюдается. Ember.run.debounce
не возвращает функцию, а вместо этого добавляет дескриптор функции в словарь. Каждое последующее время Ember.run.debounce вызывается с помощью этого дескриптора функции, он проверяет словарь, чтобы увидеть последний раз, когда функция была вызвана, и отмените ее как ожидалось.
var MyView = Ember.View.extend({
calledRarely: function() {
console.log("This will log rarely.");
},
calledOften: function() {
console.log("This will log often.");
Ember.run.debounce(this, this.calledRarely, 1000);
}.observes("propertyThatChangesOften")
});
Здесь this.calledOften
не отключается вообще, поэтому Ember.run.debounce
будет называться так часто, как свойство изменяется. Он не будет вызывать this.calledRarely
, пока не завершится наш тайм-аут debounce.