Не работает sleep

Если вы только начинаете осваивать систему MajorDoMo и чего-то не знаете или не можете понять, то задавайте свои вопросы в этой ветке.

Модератор: immortal

Ответить
Аватара пользователя
klejnov
Сообщения: 62
Зарегистрирован: Чт июн 28, 2018 4:31 am
Откуда: Бобруйск

Не работает sleep

Сообщение klejnov »

Добрый вечер, форумчане.

Не могу решить проблему:

сценарий:

Код: Выделить всё

say("Проверка 1", 2);
sleep(5);
say("Проверка 2", 2);
если запускать вручную, то между голосовыми сообщениями "Проверка 1" и "Проверка 2" пауза есть.

а если запускать голосом, через Алису, то сначала пауза 5 секунд, а потом сразу поочередно без паузы две фразы "Проверка 1" и "Проверка 2".

если сценарий сделать таким:

Код: Выделить всё

say("Проверка 1", 2);
sleep(5);
sleep(5);
say("Проверка 2", 2);
и снова запускать голосом, через Алису, то сначала пауза 10 секунд, а потом сразу поочередно без паузы две фразы "Проверка 1" и "Проверка 2".


Куда копать? как исправить? Спасибо.
Аватара пользователя
SmoKE_xDDD
Сообщения: 816
Зарегистрирован: Ср апр 17, 2019 5:00 pm
Откуда: Нижний Новгород

Re: Не работает sleep

Сообщение SmoKE_xDDD »

Не юзайте sleep, вы вешаете всю систему на 5 секунд.... Таймеры же есть...
Аватара пользователя
xor
Сообщения: 2044
Зарегистрирован: Сб ноя 22, 2014 8:45 pm

Re: Не работает sleep

Сообщение xor »

klejnov писал(а):Добрый вечер, форумчане.

Не могу решить проблему:

сценарий:

Код: Выделить всё

say("Проверка 1", 2);
sleep(5);
say("Проверка 2", 2);
если запускать вручную, то между голосовыми сообщениями "Проверка 1" и "Проверка 2" пауза есть.

а если запускать голосом, через Алису, то сначала пауза 5 секунд, а потом сразу поочередно без паузы две фразы "Проверка 1" и "Проверка 2".

если сценарий сделать таким:

Код: Выделить всё

say("Проверка 1", 2);
sleep(5);
sleep(5);
say("Проверка 2", 2);
и снова запускать голосом, через Алису, то сначала пауза 10 секунд, а потом сразу поочередно без паузы две фразы "Проверка 1" и "Проверка 2".


Куда копать? как исправить? Спасибо.
Да, со слипом - осторожнее. А вот ещё - вместо say попробуйте debmes ('проверка 1'); и тд. И проверьте в х рее. Должна быть пауза. А say может кэшироваться, через очередь сообщений передаваться и тд

Отправлено с моего Redmi 4X через Tapatalk

Chainik
Сообщения: 1465
Зарегистрирован: Вс янв 10, 2016 11:05 am

Re: Не работает sleep

Сообщение Chainik »

Sleep использовать "вредно". Как правильно сказали, это подвешивает систему. Попробуйте использовать, как уже предложили, таймеры:

Код: Выделить всё

say("Проверка 1", 2);
setTimeOut('zaderzhka_5_sec','say("Проверка 2", 2);',5);
Аватара пользователя
klejnov
Сообщения: 62
Зарегистрирован: Чт июн 28, 2018 4:31 am
Откуда: Бобруйск

Re: Не работает sleep

Сообщение klejnov »

Chainik писал(а): Чт янв 30, 2020 11:20 am Sleep использовать "вредно". Как правильно сказали, это подвешивает систему. Попробуйте использовать, как уже предложили, таймеры:

Код: Выделить всё

say("Проверка 1", 2);
setTimeOut('zaderzhka_5_sec','say("Проверка 2", 2);',5);

А можно ли здесь:

Код: Выделить всё

setTimeOut('zaderzhka_5_sec','say("Проверка 2", 2);',5);
Вот эту часть:

Код: Выделить всё

say("Проверка 2", 2);
Вынести в отдельную функцию и в таймере прописать название функции? Т.к. в таймере может быть не одна строчка на выполнения, а несколько и тогда код будет сильно нагроможден.

Спасибо.
Chainik
Сообщения: 1465
Зарегистрирован: Вс янв 10, 2016 11:05 am

Re: Не работает sleep

Сообщение Chainik »

klejnov писал(а): Чт янв 30, 2020 11:29 am
Chainik писал(а): Чт янв 30, 2020 11:20 am Sleep использовать "вредно". Как правильно сказали, это подвешивает систему. Попробуйте использовать, как уже предложили, таймеры:

Код: Выделить всё

say("Проверка 1", 2);
setTimeOut('zaderzhka_5_sec','say("Проверка 2", 2);',5);

А можно ли здесь:

Код: Выделить всё

setTimeOut('zaderzhka_5_sec','say("Проверка 2", 2);',5);
Вот эту часть:

Код: Выделить всё

say("Проверка 2", 2);
Вынести в отдельную функцию и в таймере прописать название функции? Т.к. в таймере может быть не одна строчка на выполнения, а несколько и тогда код будет сильно нагроможден.

Спасибо.
Наверняка можно и в функцию (правда, сам не пробовал). Но самый простой вариант, записать все, что должно быть сделано, в скрипт (сценарий)

Код: Выделить всё

setTimeOut('zaderzhka_5_sec','runScript("Mnogo_vsyakikh_deistviii");',5);
или в метод

Код: Выделить всё

setTimeOut('zaderzhka_5_sec','callMethod("Имя_Объекта.Mnogo_vsyakikh_deistviii");',5);
Аватара пользователя
klejnov
Сообщения: 62
Зарегистрирован: Чт июн 28, 2018 4:31 am
Откуда: Бобруйск

Re: Не работает sleep

Сообщение klejnov »

Chainik писал(а): Чт янв 30, 2020 12:22 pm Наверняка можно и в функцию (правда, сам не пробовал). Но самый простой вариант, записать все, что должно быть сделано, в скрипт (сценарий)

Код: Выделить всё

setTimeOut('zaderzhka_5_sec','runScript("Mnogo_vsyakikh_deistviii");',5);
или в метод

Код: Выделить всё

setTimeOut('zaderzhka_5_sec','callMethod("Имя_Объекта.Mnogo_vsyakikh_deistviii");',5);
Как вариант. Спасибо.
Аватара пользователя
xor
Сообщения: 2044
Зарегистрирован: Сб ноя 22, 2014 8:45 pm

Re: Не работает sleep

Сообщение xor »

klejnov писал(а):
Chainik писал(а): Чт янв 30, 2020 12:22 pm Наверняка можно и в функцию (правда, сам не пробовал). Но самый простой вариант, записать все, что должно быть сделано, в скрипт (сценарий)

Код: Выделить всё

setTimeOut('zaderzhka_5_sec','runScript("Mnogo_vsyakikh_deistviii");',5);
или в метод

Код: Выделить всё

setTimeOut('zaderzhka_5_sec','callMethod("Имя_Объекта.Mnogo_vsyakikh_deistviii");',5);
Как вариант. Спасибо.
Можно предварительно загнать код в текстовую переменную и в таймер её подставлять

Отправлено с моего Redmi 4X через Tapatalk

Аватара пользователя
xor
Сообщения: 2044
Зарегистрирован: Сб ноя 22, 2014 8:45 pm

Re: Не работает sleep

Сообщение xor »

Chainik писал(а):Sleep использовать "вредно". Как правильно сказали, это подвешивает систему. Попробуйте использовать, как уже предложили, таймеры:

Код: Выделить всё

say("Проверка 1", 2);
setTimeOut('zaderzhka_5_sec','say("Проверка 2", 2);',5);
Ну, если быть точным, не систему подвешивает, а тот поток, где слип выполняется

Отправлено с моего Redmi 4X через Tapatalk

Ответить