У меня есть функция, которая выполняется щелчком (или нажатием), потому что я работаю с Кордовой.Javascript - функция предотвращения многократного выполнения
Проблема заключается в том, что функция вызывает следующий объект из Parse.com, который показывает свои данные, но по какой-то причине он выполняет эту функцию дважды или даже 3 раза, пропуская 1 или 2 объекта, которые должны быть показаны.
Я хочу, чтобы это не происходило, поэтому я уже использовал флаг (логический), чтобы указать, был ли он выполнен, установив его в true. Если флаг был ложным, он может быть выполнен и флаг установлен в значение true. Другая проблема заключается в том, что когда я вызываю функцию еще раз, логическое значение по-прежнему равно true, и функция не будет выполнена.
Поэтому я не могу инициализировать флаг ложью внутри метода, потому что тогда он всегда будет выполняться. Глобальная переменная будет установлена в true в первый раз и останется верной для остальной части ее «жизни».
Я попробовал второй метод, используя счетчик и убедившись, что если счетчик достигнет, допустим, 0, он может быть выполнен, но тогда у меня такая же проблема, если он вернется к 0, когда он достигнет конца. Предположим, что функция была выполнена дважды, я мог проверить, достигает ли счетчик 2 (каждый раз увеличивая его) и устанавливая его обратно на 0. Затем, когда в следующий раз, когда он будет выполнен, он будет выполняться 3 раза, поэтому, когда произойдет проверка если счетчик достигает 2 .., он возвращается к 0, и следующее выполнение (третий) будет выполнено снова, потому что счетчик снова 0.
Как уловить это или предотвратить это?
Я сделал основной Javascript, чтобы показать вам, что я имею в виду:
window.addEventListener("load",setup,false);
var counter = 0;
function setup() {
for(var i = 0; i < 3; i++) {
showAlert();
}
}
function showAlert() {
if(counter == 0) {
alert("Executed once");
counter++;
} else if(counter > 2) //counter is bigger than 2, so it got executed more than once {
counter = 0; //reset the counter to 0
}
}
Цель состоит в том, чтобы предотвратить функцию от выполнения более чем один раз (в этом случае сигнал тревоги не может быть показано более одного раза) , Это может быть выполнено два или даже три раза или даже больше. Как я могу это предотвратить?
Спасибо! Я немного знаю о программировании, но это то, чего я до сих пор не встречал, поэтому я не знаю, как я могу это поймать и убедиться, что он выполнен один раз?
Вы ищете функцию, которую можно вызывать только каждые X секунд (например, помощник lodash's [_.debounce] (https://lodash.com/docs#debounce)) или функцию, которую можно вызвать только после он завершил операцию? –
Я ищу функцию, которую нужно вызывать один раз, когда пользователь нажимает на нее, но по какой-то причине Кордова выполняет ее один, два или три раза. Поэтому я ищу способ предотвратить это. – Jorrex