Вопрос по wait, javascript, function, sleep, delay – Как создать функцию задержки JavaScript [дубликат]

17

На этот вопрос уже есть ответ здесь:

Что такое JavaScrip#-версия sleep ()? 71 ответ

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

func#ion s#ar#Delay(leng#hOfDelay)
{
//code #o make i# delay for leng#hOfDelay amoun# of #ime
}

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

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

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

Самый простой способ - это использоватьSetTimeout и сделать оставшуюся часть кода в функции, которую вы передаете setTimeout. Denys Séguret

Ваш Ответ

4   ответа
0

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

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

замещать3000 с # измиллисекунды

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

Этот ответ немного отсутствует (я думаю), потому что setInterval будет продолжаться каждые 3 секунды, а не только один раз. Adam Davis
@CBC_NS Я только что попробовал это, и я также повторял это каждые 3 секунды. Удобно иметь в виду, хотя. Trevor Wood
просто замените setInterval на setTimeout, и он будет работать как задумано prinsen
Этот ответ неверен. Оригинальный пост гласит "Я хочу добавить небольшую задержку, чтобы сценарий достиг этой точки, подождал 3 секунды, а затем продолжил работу с остальным кодом ».  Этот код будет непрерывно вызывать объявленную функцию каждые n миллисекунд, пока не будет установлен clearInterval. Это может иметь очень плохие непредвиденные последствия. thefreeline
@AdamDavis I 'Я проверил этот метод, и у меня нетУ меня не было никаких проблем. Если вы или кто-то еще протестируете это и продемонстрируете иное, сообщите об этом сообществу. Спасибо CBC_NS
2

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

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

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

к счастью да: sleep.jsstackoverflow.com/a/16873849/667927 Thiago Macedo
Есть какой-либо способ сделать это? Создание страницы без ответа на самом деле является положительным моментом для меня! user2370460
3

Я только нашел этот ответ на другом форуме:JavaScript спать / ждать, прежде чем продолжить

Спасибо за все ваши ответы.

41

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

setTimeout(doSomething, 3000);

function doSomething() {
   //do whatever you want here
}
Как бы я создал функцию, такую как startDelay (lengthOfDelay), которую я мог бы вызватьв любом месте в скрипте и пусть он делает остальную часть кода потом, а не только// делай что хочешь здесь? user2370460
Я не совсем уверен, что именно ты хочешь делать. Вы хотите остановить выполнение страницы или запланировать функцию, которая будет выполняться после задержки? Kassem
Didn»я не работал в первый раз, но следующие проблемы решили мою проблему: setTimeout (function () {doSomething ();}, 3000); Sander
@ Kassm Я думаю, он (а) имеет в виду, например, Что делать, если вы хотите console.log сообщение каждую секунду, используя цикл for? то естьwhile(true){ [a delay function, incorporating console.log]}  Я неНе думаю, что ваша функция будет работать последовательно. geotheory

Похожие вопросы