Задать вопрос
Ingernirated
@Ingernirated
Романыч

Как сделать функцию неперевызывающейся?

Подскажите, есть функция, как сделать так, чтобы мы её не могли вызвать ещё раз, пока она работает?
И как это сделать с группой функций? Что бы одновременно могла выполняться только одна функция, которая началась первая и только по окончанию можно вызвать другую?
Пример не самый лучший, но смысл примерно тот же.Как сделать, чтобы один раз нажав мы запустили и пока она работает, нажимая ещё раз на кнопку и вызывая функцию, она не вызывалась и не ускоряла нам х++,но по окончанию работы(если таковой установим), только потом можем вызвать ещё раз
<code lang="javascript">
<button onclick="plus()" />
var x = 0;
function plus() {
setTimeout(plus, 1000);
x++;
if (x ==100) {
clearTimeout(plus);
}
console.log(x);
}
</code>
  • Вопрос задан
  • 257 просмотров
Подписаться 2 Оценить 7 комментариев
Решения вопроса 1
Я, конечно, не гуру, но, можно сделать ключ.
var x = 0,
	key = true;
function plus() {
	if( key ) {
		key = false;
	}
	
	// do any
	key = true;
}
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
bubandos
@bubandos
bash'у, javascript'ую, php'лю, css'аю, html'каю
Вы бы задачу описали конкретную, зачем вам это нужно.
А судя по вашему примеру, лучше по нажатию кнопки снимать обработчик события а в конце, как функция отработала - добавлять его.
Ответ написан
mrTyler
@mrTyler
Frontend Developer
if (x !== 100) return false;

может абортить выполнение, а вот если === 100 то исполнить код?
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы