javascript ждать определенное количество времени перед выполнением функции

#javascript

#javascript

Вопрос:

есть ли какой-либо способ отложить функцию в javascript, которую я хочу сделать:

 function showLabel(){
    document.getElementById(id).show();
    wait(5000); //wait 5 sec
    document.getElementById(id).hide();
}
  

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

Примечание: я не могу использовать jQuery

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

1. Будьте осторожны, встроенных show|hide методов нет.

2. у нас есть пользовательский веб-фреймворк Java, и мы пишем в нем javascript, и у нас есть такой метод, как this.componentID.setVisible(true / false), и я использую его, но все равно спасибо.

Ответ №1:

Подсказка: используйте setTimeout

 window.setTimeout("javascript function", milliseconds);
  

Прочитайте документы и узнайте, как это сделать: https://developer.mozilla.org/en/docs/Web/API/window.setTimeout

Если вы хотите что-то вроде сна, то:

 function sleep(millis, callback) {
    setTimeout(function()
            { callback(); }
    , milliseconds);
}
  

Я бы предпочел:

 function doStuff()
{
  //do some things
  setTimeout(continueExecution, 10000) //wait ten seconds before continuing
}

function continueExecution()
{
   //finish doing things after the pause
}
  

Другой способ с использованием цикла

 <script type="text/javascript">
// bad implementation
function sleep(milliSeconds){
    var startTime = new Date().getTime(); // get the current time
    while (new Date().getTime() < startTime   milliSeconds); // hog cpu
}
</script>
  

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

1. setInterval не предназначен для этого, он вызывает функцию снова и снова в течение заданного интервала.

Ответ №2:

Вы можете попробовать это:

 function showLabel(){
    document.getElementById(id).show();
    setTimeout(function()
    {
        document.getElementById(id).hide();
    }, 5000);
}
  

Используйте setTimeout для одноразовой задачи, иначе setInterval для повторяющейся задачи.

Ответ №3:

используйте setTimeout функцию в javascript. и очистите время ожидания при вызове функции

 var timerId = setTimeout(function showLabel(){
      document.getElementById(id).show();
        document.getElementById(id).hide();
    }, 5000);
 clearTimeout(timerId);
  

Ответ №4:

 setTimeout(
    function(){ Your_function },  milliseconds
);
  

Это вызывает функцию по истечении заданного времени.