Вытащить данные с сервера на доменное колесо? - PullRequest
0 голосов
/ 17 февраля 2020

У меня есть запрос POST, который извлекает данные с сервера в соответствии с параметрами, которые настраиваются пользователем с помощью number inputs. Простого прослушивания события change недостаточно, потому что я хочу, чтобы данные обновляли sh при использовании колесика мыши для изменения входного значения.

Вызов моей функции refre sh с чем-то подобным явно не оптимально:

$('input').on('mousewheel', function(){
    refresh_data();
});

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

В настоящее время я использую setInterval для просмотра объекта, содержащего интервалы (округленные временные метки), для которых был запрошен refre sh. Внутри слушателя mousewheel я добавляю следующий интервал к объекту, как свойство / ключ, чтобы избежать дублирования.

Примерно так:

var i = 100;
var obj = [];

$('input').on('mousewheel', function(){
    // add next interval to obj;
    obj[Math.ceil(Date.now()/i)*i] = true;
});

var check = setInterval(function(){
    // refresh if current interval is in obj
    var t = Math.floor(Date.now()/i)*i;
    if(obj[t]){
        delete obj[t]; // remove from obj
        refresh_data();
    }
}, i);

Я тестировал этот код на своей машине с i=50, и объект всегда пуст, что нам и нужно, но с i=30, как только я go слишком быстро с колесом, я вижу некоторые старые интервалы, накапливающиеся в объекте. Это вызвано тем, что setInterval пропускает удары, поэтому, какое бы значение я не выбрал для i, некоторые пользователи с меньшим количеством процессоров могут " пропустить неправильный удар ", и в конечном итоге он завершит движение своего колеса мыши, увидев результат, который не соответствует значению параметров.

Я чувствую, что, возможно, я делаю это более сложным, чем это должно быть, поэтому я спрашиваю:

Что бы лучший способ получить данные с сервера на колесо, учитывая:

1: я хочу постоянно refre sh данные как пользователя колесо над полем ввода.

2: я хочу быть 100% уверен, что представленные данные после движение колеса всегда точное .

1 Ответ

1 голос
/ 17 февраля 2020

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

window.onscroll = function(ev) {
      if ((window.innerHeight + window.pageYOffset ) >= 
      document.body.offsetHeight) {
           alert("you're at the bottom of the page");
     }
  };
...