Алгоритмически, когда вы впервые обнаруживаете, что он находится в диапазоне, вы делаете setTimeout()
в течение 2 секунд. С тех пор, если координаты остаются в границах и таймер уже установлен, вы ничего не делаете. Если координаты выходят за границы, вы останавливаете таймер с помощью clearTimeout()
. Если таймер срабатывает до того, как вы его очистите, то координаты остаются в границах в течение требуемого времени.
Вот пример кода:
var myTimer = null;
function processCoordinatePair(x,y) {
if (inBounds(x,y)) {
if (!myTimer) {
setTimeout(function() {
// we stayed in bounds for 2 seconds, do whatever needs doing
myTimer = null; // clear timer for future use
}, 2000);
}
} else { // not in bounds any more
if (myTimer) {
clearTimeout(mytimer); // if timer was running, stop it
myTimer = null;
}
}
}
Реализация функции inBounds()
, очевидно, зависит от вас, поскольку вы не описали эту часть проблемы.