Nano Hash - криптовалюты, майнинг, программирование

Выполнить событие после того, как NativeScript Slider перестанет изменяться

У меня есть ползунок со значением, привязанным к наблюдаемому, там все отлично работает.

Я установил 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);

Ответы:


1

В UnderscoreJS у вас есть функция debounce, которая делает именно то, чего вы пытаетесь достичь здесь.

Из документов:

_.debounce(function, wait, [immediate])  

Создает и возвращает новую отклоненную версию переданной функции, выполнение которой будет отложено до тех пор, пока не истечет wait миллисекунд с момента последнего вызова. Полезно для реализации поведения, которое должно произойти только после того, как входные данные перестанут поступать. Например: предварительный просмотр комментария Markdown, пересчет макета после того, как размер окна перестал изменяться, и так далее.

20.06.2016
  • Я думал о дебаунсе, но вылетел из головы. Я попробую и дам вам знать, если все хорошо. Заранее спасибо. 20.06.2016
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..