Как создать функцию задержки javascript

У меня есть javascript файл, и в нескольких местах я хочу добавить небольшую задержку, поэтому script достигнет этой точки, подождите 3 секунды, а затем продолжит работу с остальной частью кода. Лучший способ, которым я думал сделать это, - создать функцию, которую я мог бы вызвать из любой точки script.

function startDelay(lengthOfDelay)
{
//code to make it delay for lengthOfDelay amount of time
}

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

Есть ли какой-нибудь способ, которым я могу заставить script сделать паузу в течение нескольких секунд? У меня нет проблем с замораживанием пользовательского интерфейса, пока код приостановлен.

Если нет, есть ли способ, которым я мог бы использовать PHP sleep() для достижения этого? (Я знаю, что PHP - это серверная сторона, а Javascript - клиентская, но, возможно, есть способ, о котором я не слышал.)

Ответ 1

Вам не нужно использовать анонимную функцию с setTimeout. Вы можете сделать что-то вроде этого:

setTimeout(doSomething, 3000);

function doSomething() {
   //do whatever you want here
}

Ответ 3

Ах да. Добро пожаловать в асинхронное выполнение.

В принципе, приостановка script приведет к тому, что браузер и страница перестанут отвечать на запросы в течение 3 секунд. Это ужасно для веб-приложений, и поэтому не поддерживается.

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

Ответ 4

Вы можете создать задержку, используя следующий пример

setInterval(function(){alert("Hello")},3000);

Замените 3000 на # из миллисекунд

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