У меня есть ползунок со значением, привязанным к наблюдаемому, там все отлично работает.
Я установил Observable.propertyChangeEvent
на ползунке, поэтому я получаю событие, когда наблюдаемое изменяется (когда пользователь перетаскивает ползунок).
slider.on(Observable.propertyChangeEvent, function(data: PropertyChangeData) {
console.log('EventName: ' + data.eventName);
console.log('PropName: ' + data.propertyName);
console.log('Value: ' + data.value);
})
Что я хочу:
Я хотел бы выполнить событие после того, как наблюдаемое перестанет меняться в течение заданного периода времени (пример: 1000 мс). В довершение всего, способ остановить это событие, если наблюдаемое снова начнет меняться. Мне нужно выполнить некоторую обработку, как только пользователь установит ползунок в место назначения, чтобы обновить некоторые другие части пользовательского интерфейса. Поэтому, если пользователь снова начинает изменять его, для повышения производительности может быть лучше ОСТАНОВИТЬ эту обработку, а затем выполнить ее после внесения изменений пользователем, настраивающим ползунок.
Я думаю установить переменную, а затем запустить таймер, но на самом деле это не щелчок прямо сейчас для меня :)
Обновление с предложением ответа с использованием Underscore.js _.debounce()
let underscore = require("underscore");
function debouncedValue(data: PropertyChangeData) {
console.log('NewSlider value: ' + data.value);
}
let debouncedSlider = underscore.debounce(debouncedValue, 800);
slider.on(Observable.propertyChangeEvent, debouncedSlider);