Sleep(delay) в javascript?

Нужна функция sleep, наподобие как в других языках, в javascript. Чтобы останавливала остальной код до загрузки кое-каких данных.



Особенности национальных форумов: в америке ответят, в европе пошлют, а в россии объяснят, почему ты дурак (анекдот). К чему это?

Не надо мне рассказывать про setTimeout и setInterval. Они здесь не подходят. Мне конкретно нужно возвратить из функции данные, которые ещё не пришли. Return-ом. Не коллбэком. Задержка совсем маленькая, ~6 мс, так что неудобств не будет. Бесконечный цикл не подходит.
  • Вопрос задан
  • 143009 просмотров
Пригласить эксперта
Ответы на вопрос 8
SpeCT
@SpeCT
Не слушайте никого и делайте так, как считаете нужным. Про синхронный XHR тут уже упомянули, так что ниже код, что вы просили:

function sleep(ms) {
ms += new Date().getTime();
while (new Date() < ms){}
} 
Ответ написан
Меня укусил комар, нога страшно чешется. Подскажите, как правильно отрезать ногу?

Особенности национальных форумов: в америке ответят, в европе пошлют, а в россии объяснят, почему ты дурак (анекдот). К чему это?
Не надо мне предлагать перетерпеть это. Нога безумно чешется, потому её надо именно отрезать.
Ответ написан
KirAmp
@KirAmp
Придумывайте велики с датой и циклом. Или же извратитесь с таймаутом. По другому насколько я знаю нельзя
Ответ написан
Комментировать
barmaley_exe
@barmaley_exe
Мне конкретно нужно возвратить из функции данные, которые ещё не пришли.
Откуда не пришли? Если используется XHR, то делайте его синхронным.
Ответ написан
Antelle
@Antelle
Вы этого не сделаете в принципе. Пока вы будете висеть в функции, пришедшие данные должен кто-то обработать, а сделать это некому, потому что javascript однопоточен.
Ответ написан
@nytlenc
function sleepFor( sleepDuration ){
    var now = new Date().getTime();
    while(new Date().getTime() < now + sleepDuration){ /* do nothing */ } 
}
Ответ написан
Комментировать
Посмотри в mootools, есть функция delay. Она откладывает начало выполнения функции, может что-то из этого выйдет.
Ответ написан
@bikevit2008
Есть еще вариант async/await
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы