#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);
}