Інструмент для навчання слухових собак - setTimeout ()
У попередній статті я розпочав ітераційну розробку невеликої програми JavaScript для допомоги в навчанні собаки робити звукові сповіщення. Поки що програма, яку ви можете переглянути тут, включає встановлену кнопку тривоги, яка при натисканні спливає попередження про те, що сигналізація вимкнулася (хоча звуковий сигнал ще не налаштований.) Наступним кроком ми фактично встановлять очікування між натисканням кнопки «встановити будильник» і сигналом, таким як він, вимикається.

У JavaScript та в документомістській моделі (DOM) є купа обробників подій, які чекають, коли щось станеться (тобто onClick, onMouseOver, ...); однак у цьому випадку ми хочемо зачекати, поки пройде кількість часу, DOM надає спосіб зробити це також setTimeout (). setTimeout () потрібні два аргументи, фрагмент коду або функція, яку потрібно запустити, і час зачекати в мілісекундах, перш ніж її запустити. set_timeout () Ви також можете скористатися третьою опцією, що позначає мову сценарію - JavaScript, JScript або VBScript (це частина DOM, а не JavaScript, пам’ятайте.)

Наш новий код виглядає наступним чином:


функція do_alarm () {
// визначити час очікування в секундах
wait_secs = 52; // поки що просто визначте це
// чекайте, коли буде час і звуковий сигнал
setTimeout (sound_alarm (), (wait_secs * 1000))
}


Це чудово працює, але важко сказати, тому що нічого не змінюється після натискання кнопки, поки не настане час. Однак ДОМ може нам також у цьому допомогти. Наступні 2 рядки я додав до початку do_alarm () функція:


// Позначити будильник як встановлений
document.getElementById ("сигнал_ кнопки"). disabled = true
document.getElementById ("alarm_button"). value = "Набір сигналу тривоги"


Це змінює кнопку, яку ми натиснули, щоб встановити будильник, щоб сказати "Набір сигналу тривоги", і вимкне його. Якщо ми хочемо знову використовувати сигнал тривоги, нам доведеться змінити кнопку назад до початкового стану. Я додав це до функції sound_alarm (). Ви можете переглянути весь код і спробувати робочий приклад тут.