Ответ 1
Просто поместите свой код внутри анонимной функции, переданной в setTimeout.
например.
functionToRunFirst();
setTimeout(function() {
// rest of code here
}, 2000);
Если у меня есть функция, которую я бы хотел, чтобы мой js-код запускал ее немедленно, но после запуска, подождите 2 секунды. Как достичь этой логики?
( Примечание:. Только обратная логика сравнивается с setTimeout()
, так как setTimeout(
) сначала ждет определенное количество времени, а затем выполняет функцию.)
Просто поместите свой код внутри анонимной функции, переданной в setTimeout.
например.
functionToRunFirst();
setTimeout(function() {
// rest of code here
}, 2000);
Я думаю, что вы ищете способ приостановить выполнение кода до таймаута. Многие любительские программисты желают такой конструкции, но она не существует в 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"]);
?>
с помощью setTimeout
- это один из способов сделать это
function run() {
// run this code
setTimeout(afterTwoSeconds, 2000);
}
function afterTwoSeconds() {
// run this code two seconds after executing run.
}
// call run
run();
что означает "ждать в течение 2 секунд"? Вы хотите заблокировать возврат из функции в течение 2 секунд?
Если это так, вы не можете этого сделать. в JavaScript нет функции sleep().
вам нужно просто использовать setTimeout()
Ничего плохого в ответах выше, но по-другому:
$("#somethingThatDoesntExist").fadeTo(2000, 1, function() { // two seconds later });
учитывая некоторое заполнение с вашей стороны, это должно выполняться 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
}
}
Я не знаю, почему вы, ребята, так много. Я считаю, что мы можем сделать это, используя объект Date. Сначала возьмите значение даты и используйте функцию setInterval, чтобы подождать, пока мы не получим заданный интервал (получите новую дату и проверьте разницу). Как только мы получим эту функцию reset и перейдем к вашему коду после этого.