Javascript запускает последнее событие - PullRequest
1 голос
/ 09 апреля 2019

Я кодирую веб-приложение, и я не знаю, как продолжать то, что я пытаюсь сделать с Javascript.

У меня есть функция, которая срабатывает при масштабировании карты или при перемещении карты. Я стараюсь, чтобы эта функция не выполняла свои функции, пока не прошло некоторое время (например, 2 секунды). Хорошо, я могу использовать setInterval метод для достижения этого.

Но то, что я хочу, и я не знаю, как это сделать ... если я делаю увеличение 3 раза, очень близко по времени между ними, я просто хочу обработать последнее увеличение , а не два предыдущих. Я имею в виду, что 2 первых вызова функций должны быть отменены, или что-то в этом роде.

Как я мог это сделать?


Пример (псевдокод) того, что у меня есть:

function doStuff() {
    setInterval(function({
       // do some stuff here...
    }, 2000);
}

myMap.on('dragend', doStuff);  // If I move inside the map
myMap.on('zoomend', doStuff);  // If I do zoom on the map

Ответы [ 2 ]

1 голос
/ 09 апреля 2019

То, что я пытаюсь установить, - это устанавливать интервал в глобальном варианте каждый раз, когда вы начинаете свой интервал; затем, когда вы запускаете событие, вы проверяете, установлена ​​ли переменная, если это так, вы используете функцию clearInterval, чтобы отменить предыдущий интервал перед началом следующего.

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

var intervalID = 0;

function doStuff(){
  if(intervalID != 0){
    window.clearInterval(intervalID);
  }
  intervalID = setInterval(function({
       // do some stuff here...
       intervalID = 0; // try reseting the intevalID on completion, not sure if here
  }, 2000);

//  Your stuff

https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/setInterval https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/clearInterval

0 голосов
/ 09 апреля 2019

Вы можете использовать object.addEventListener('load', function()) -функцию.

Функция внутри нее сработает после загрузки объекта.

...