Как заблокировать множество выполняемых функций JS

#javascript

#javascript

Вопрос:

я пытаюсь показать некоторый текст в функции, после этого я хочу подождать 3 секунды, а затем я хочу запустить другие функции. Мой псевдокод:

 showText();
wait 3 seconds
showSecondText();
showOtherText();
  

И теперь я написал:

 function helloOnClick(){
showText();
var myVar = setInterval(function(){showSecondText(data); showOtherText(data); clearInterval(myVar); },3000);
}
  

И теперь это почти идеально, но когда я нажимаю кнопку и запускаю helloOnClick () много раз, мои функции showSecondText () будут запускаться снова и снова, потому что setInterval создает много экземпляров, потому что clearInterval уничтожает только один?

Как решить эту задачу? У меня есть две возможности: 1. Я могу отключить кнопку, когда будет нажата функция helloOnClick, и для завершения я могу включить 2. При нажатии я могу установить флаг на true, а после завершения изменить на false. Когда флаг будет установлен, процедура не будет выполняться.

Что будет лучшим выбором?

Ответ №1:

Вы хотите setTimeout() , а не setInterval() .

Интервал — это цикл, тайм-аут — задержка.

Комментарии:

1. amm мне нужно что-то вроде PAUSE в JS. я хочу показывать сообщение в течение 3 секунд и по истечении этого времени заменять сообщение на другое.

Ответ №2:

Вы можете использовать setTimeout и вам, вероятно, следует извлечь процесс отображения текста в его собственной функции, позволяя передавать обратный вызов, когда процесс завершен.

Например.

 function helloOnClick() {
    yourButton.disabled = true;

    startShowingText(function () {
        yourButton.disabled = false;
    });
}

function startShowingText(completed) {
    showText();

    setTimeout(function () {
        showSecondText();
        showOtherText();
        completed amp;amp; completed();
    }, 3000);
}