Подтвердить что ты не робот

Как подождать некоторое время после запуска функции

Если у меня есть функция, которую я бы хотел, чтобы мой js-код запускал ее немедленно, но после запуска, подождите 2 секунды. Как достичь этой логики?

( Примечание:. Только обратная логика сравнивается с setTimeout(), так как setTimeout() сначала ждет определенное количество времени, а затем выполняет функцию.)

4b9b3361

Ответ 1

Просто поместите свой код внутри анонимной функции, переданной в setTimeout.

например.

functionToRunFirst();
setTimeout(function() {
    // rest of code here
}, 2000);

Ответ 2

Я думаю, что вы ищете способ приостановить выполнение кода до таймаута. Многие любительские программисты желают такой конструкции, но она не существует в JavaScript. Это не нужно. Для всех целей в JavaScript setTimeout и setInterval - идеальные решения для кандидатов.

Однако JavaScript является мощным языком. Вы можете создать свою собственную конструкцию для решения этой проблемы. Взгляните на Neil Mix сообщение в блоге. С его помощью вы можете создать функцию сна, которая может использоваться по следующим строкам (обратите внимание, что в настоящее время только Firefox поддерживает JavaScript 1.7):

function mainGeneratorFunction() {
    functionToRunFirst();
    yield sleep(2000);
    //rest of the code
}

Однако для других браузеров не отчаивайтесь. Вы можете использовать хак, известный как XHR Sleeping. В этом подходе вы просто используете синхронный XMLHttpRequest для вызова серверной стороны script как php, который затем спит в течение указанного времени и возвращается после его просыпания. Код JavaScript выглядит следующим образом:

function sleep(microseconds) {
    var request = new XMLHttpRequest();
    request.open("GET", "sleep.php?time=" + microseconds, false);
    request.send();
}

functionToRunFirst();
sleep(2000000);
//rest of the code

Функция спящего режима php выглядит следующим образом:

<?php
    usleep($_GET["time"]);
?>

Ответ 3

с помощью setTimeout - это один из способов сделать это

function run() {    
    // run this code

    setTimeout(afterTwoSeconds, 2000);    
}

function afterTwoSeconds() {    
    // run this code two seconds after executing run.   
}

// call run
run();

Ответ 4

что означает "ждать в течение 2 секунд"? Вы хотите заблокировать возврат из функции в течение 2 секунд?

Если это так, вы не можете этого сделать. в JavaScript нет функции sleep().

вам нужно просто использовать setTimeout()

Ответ 5

Ничего плохого в ответах выше, но по-другому:

$("#somethingThatDoesntExist").fadeTo(2000, 1, function() {
    // two seconds later
});

Ответ 6

учитывая некоторое заполнение с вашей стороны, это должно выполняться 5 раз с помощью таймера с половиной секунды

var counter = 0;
var arrayOfPicture = []; //fill this out

function gifSimulator() {

    //use the counter as an index in the array, and change the image source of your element with that.


    if (counter < 5) {

        setTimeout(function () {

            counter++;

            gifSimlulator();

        }, 500); //lets wait half a second
    }
}

Ответ 7

Я не знаю, почему вы, ребята, так много. Я считаю, что мы можем сделать это, используя объект Date. Сначала возьмите значение даты и используйте функцию setInterval, чтобы подождать, пока мы не получим заданный интервал (получите новую дату и проверьте разницу). Как только мы получим эту функцию reset и перейдем к вашему коду после этого.