Аватар для АИЕ
4 / 4 / 0
Регистрация: 28.09.2015
Сообщений: 281

Функция sleep

18.03.2019, 15:36. Показов 3064. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго дня, подскажите пожалуйста.

Имеется функция:
JavaScript
1
2
3
4
5
function sleep(miliseconds)
{
var currentTime = new Date().getTime();
while (currentTime + miliseconds >= new Date().getTime()){}
}
В подобном случае отрабатывает хорошо:
JavaScript
1
2
3
console.log('сигнал'); // выходит сразу
sleep(3000); // сон 3 секунды
console.log('сигнал'); // выходит следом через 3 секунды
Но когда использую что-то типа такого, трудности возникают:
JavaScript
1
2
3
document.querySelectorAll('.NAME')[0].click(); // в чём и трудность - нажимается через 3 секунды, хотя сон не вызывал ещё
sleep(3000); // сон 3 секунды
console.log('сигнал'); // выходит следом через 3 секунды
Логически даже понять не могу как это происходит.

Добавлено через 10 минут
Подскажите, как более адекватно можно реализовать приостановку кода на 3 секунды, если не получится разобраться с имеющимся.
setInterval не подходит, так как нужно всё дальнейшее выполнение кода приостановить на 3 секунды.
Данный пример нашёл в интернете с console.log и alert работает, а вот с кликом какая-то странная вещь происходит.
1
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
18.03.2019, 15:36
Ответы с готовыми решениями:

функция Sleep() ?
Кто знает , какое значение точно нужно указывать что ты бы единица отчета соответствовала секунде? Я ставлю Sleep(70), но решил...

функция sleep()
Помогите разобраться. Я изучаю "С" и использую программу Microsoft Visual C++ 2010 Express. Все учебные программки консольные с расширением...

функция sleep()
Создайте функцию sleep(), приостанавливающую работу компьютера на столько секунд, сколько указано в аргументе функции. Перегрузите sleep()...

5
Эксперт JS
6497 / 3908 / 2006
Регистрация: 14.06.2018
Сообщений: 6,781
18.03.2019, 15:50
Лучший ответ Сообщение было отмечено АИЕ как решение

Решение

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


Вот как нужно правильно делать задержку выполнения текущей "бумажки":
PHP/HTML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
</head>
<body>
    <input type="button" class="NAME" value="OK">
    <script>
        const delay = ms => new Promise(resolve => { setTimeout(resolve, ms); });
 
        document.querySelector(".NAME").onclick = () => { console.log("Кнопка нажата"); };
        (async function () {
            document.querySelector(".NAME").click();
            await delay(10000);
            document.querySelector(".NAME").click();
        })();
    </script>
</body>
</html>
Добавлено через 11 минут
Самое интересное, что в строке с await происходит разрыв "бумажки" на два куска.
Функция перестает быть единым целым куском кода. То есть кусок после await выполнится тоже когда-нибудь потом.
1
 Аватар для АИЕ
4 / 4 / 0
Регистрация: 28.09.2015
Сообщений: 281
18.03.2019, 15:59  [ТС]
amr-now, спасибо Вам большое ) Вы мне очень помогли )
0
 Аватар для АИЕ
4 / 4 / 0
Регистрация: 28.09.2015
Сообщений: 281
19.03.2019, 07:44  [ТС]
amr-now, помогите пожалуйста разобраться.

JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
async function f2()
{
var delay = ms => new Promise(resolve => { setTimeout(resolve, ms); });
await delay(1000);
// код функции для выполнения после приостановки на 1 секунду
console.log('2'); // для примера
}
 
function f1()
{
 
// код функции выполняется
console.log('1'); // для примера
 
f2();
 
// код функции, который должен приостановится пока выполняется f2
console.log('3'); // для примера
 
}
 
f1();
 
// вывод 1
// вывод 3 не приостановился
// вывод 2 через 1 секунду
Какую из этих функций необходимо объявлять как async, чтобы не было сбоев в порядке выполнения заложенной логики действий?

Добавлено через 6 минут
Когда делаю вот так:
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
function f2()
{
// код функции для выполнения после приостановки на 1 секунду
console.log('2'); // для примера
}
 
async function f1()
{
 
// код функции выполняется
console.log('1'); // для примера
 
var delay = ms => new Promise(resolve => { setTimeout(resolve, ms); }); await delay(1000);
 
f2();
 
// код функции, который должен приостановится пока выполняется f2
console.log('3'); // для примера
 
}
 
f1();
 
// вывод 1
// вывод 2 через 1 секунду
// вывод 3 через 1 секунду
Отрабатывает всё как мне надо, но слишком длинная строка:

var delay = ms => new Promise(resolve => { setTimeout(resolve, ms); }); await delay(1000);

Хотелось бы заменить вызовом функции. Но возникает проблема как описал выше.
0
Эксперт JS
6497 / 3908 / 2006
Регистрация: 14.06.2018
Сообщений: 6,781
19.03.2019, 07:59
Лучший ответ Сообщение было отмечено АИЕ как решение

Решение

Доброе утро.
PHP/HTML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
</head>
<body>
    <script>
        async function f1() { // пишем async, потому что внутри есть инструкция с await
 
            // код функции выполняется
            console.log('1'); // для примера
 
            async function f2() {
                var delay = ms => new Promise(resolve => { setTimeout(resolve, ms); });
                await delay(1000);
                // код функции для выполнения после приостановки на 1 секунду
                console.log('2'); // для примера
            }
 
            await f2(); // Пока не выполним await, разрыва кода функции не произойдет, и остановки не будет
 
            // код функции, который должен приостановиться пока выполняется f2
            console.log('3'); // для примера
 
        }
 
        f1();
 
// вывод 1
// вывод 2 через 1 секунду
// вывод 3 
    </script>
</body>
</html>
1
 Аватар для АИЕ
4 / 4 / 0
Регистрация: 28.09.2015
Сообщений: 281
19.03.2019, 12:04  [ТС]
amr-now, отлично, помогло, спасибо за объяснение

Добавлено через 1 час 30 минут
amr-now, буду очень благодарен, если ещё загляните и поможете решить один ньюансик в моей теме:

Обмен данными в браузере хром между вкладками разных доменов
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
19.03.2019, 12:04
Помогаю со студенческими работами здесь

Функция sleep()
Добрый день! Помогите мне пожалуйста: Создать функцию sleep(), приостанавливающая работу компьютера на столько секунд, сколько указано...

Функция Sleep() C++ Builder
Дело в том что функция Sleep() не правильно работает. Мне надо чтобы при нажатии на Image, картинка двигалась влево, а потом обратно. При...

Реализована ли функция sleep
на плюсах есть функция sleep,есть ли аналог в c#?

Как работает функция sleep()
Из описания функции sleep(): Допустим задано 3600 сек = 1 час: Вопросы: - Что происходит во время исполнения функции?...

Функция sleep (1) вызывает фатальную ошибку
&lt;?php $f = 100; while ( $f &gt; -1) { echo &quot;Осталось &quot;. $f .&quot; попыток &lt;br&gt;&quot;; $f--; if ($f &lt;= 0) { $f = 100; ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

Новые блоги и статьи
Отчёт о спецтехнике находящейся в ремонте
Maks 20.04.2026
Отчёт из решения ниже размещен в конфигурации КА2. Задача: отобразить спецтехнику, которая на данный момент находится в ремонте. Есть нетиповой документ "Заявка на ремонт спецтехники" который. . .
Памятка для бота и "визитка" для читателей "Semantic Universe Layer (Слой семантической вселенной)"
Hrethgir 19.04.2026
Сгенерировано для краткого описания по случаю сборки и компиляции скелета серверного приложения. И пусть после этого скажут, что статьи сгенерированные AI - туфта и не интересно. И это не реклама -. . .
Запрет удаления строк ТЧ документа при определенном условии
Maks 19.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "Аккумуляторы", разработанного в конфигурации КА2. У данного документа есть ТЧ, в которой в зависимости от прав доступа. . .
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru