22.10 Ожидание истечения времени или ввода

Функции ожидания предназначены для ожидания определенного количества времени или до появления ввода. Например, вы можете захотеть приостановить вычисление в середине, чтобы дать пользователю время просмотреть дисплей. sit-for приостанавливает и обновляет экран и немедленно возвращается, если поступает ввод, в то время как sleep-for приостанавливает без обновления экрана.

Функция: sit-for seconds &optional nodisp

Эта функция выполняет повторный дисплей (при условии, что нет ожидающего ввода от пользователя), затем ждет seconds секунд или до появления ввода. Обычное назначение sit-for — дать пользователю время прочитать отображаемый вами текст. Значение равно t, если sit-for ждал полное время без поступления ввода (см. Miscellaneous Event Input Features). В противном случае значение равно nil.

Аргумент seconds не обязательно должен быть целым числом. Если он является числом с плавающей запятой, sit-for ждет дробное количество секунд. Некоторые системы поддерживают только целое количество секунд; в таких системах seconds округляется в меньшую сторону.

Выражение (sit-for 0) эквивалентно (redisplay), то есть оно запрашивает повторный дисплей без задержки, если нет ожидающего ввода. См. Forcing Redisplay.

Если nodisp не равно nil, то sit-for не выполняет повторный дисплей, но он все равно возвращается, как только становится доступен ввод (или когда истекает тайм-аут).

В пакетном режиме (см. Batch Mode) sit-for не может быть прерван, даже вводом из дескриптора стандартного ввода. Таким образом, он эквивалентен sleep-for, описанному ниже.

Функция: sleep-for seconds

Эта функция просто приостанавливается на seconds секунд, не обновляя дисплей. Она не обращает внимания на доступный ввод. Она возвращает nil.

Аргумент seconds не обязательно должен быть целым числом. Если он является числом с плавающей запятой, sleep-for ждет дробное количество секунд.

Также возможно вызвать sleep-for с двумя аргументами, как (sleep-for seconds millisec), но это считается устаревшим и будет удалено в будущем.

Используйте sleep-for, когда вы хотите гарантировать задержку.

См. Time of Day, для функций получения текущего времени.