まずは以下のスクリプトを見てください。
const MAX_COUNTER = 3; setTimeout(dosing_notify, 5000, '朝'); setTimeout(dosing_notify, 10000, '昼'); setTimeout(dosing_notify, 15000, '夜'); function dosing_notify(timing) { var counter = 0; var message = timing + 'のお薬の時間です'; console.log(message); setTimeout(dosing_remind, 1000, timing, counter); } function dosing_remind(timing, counter) { if(++counter > MAX_COUNTER) { console.log('回数オーバー'); return; } message = timing + 'のお薬を飲んでください'; console.log(message + '(' + counter + '回目)'); setTimeout(dosing_remind, 1000, timing, counter); }
リスト1.タイマーサンプルスクリプト
これは,5秒後,10秒後,15秒後にそれぞれ朝,昼,夜のお薬の服用を知らせるメッセージを出力するサンプルスクリプトです。関数dosing_notifyでメッセージを出力しています。
setTimeout(dosing_notify, 5000, '朝');は,引数に'朝'を設定して5秒後に関数dosing_notifyを呼び出しなさいという意味です。
ただし,コンソールにメッセージが出るだけで,Google Homeに喋らせる部分は含まれていません。
お薬の服用を知らせるメッセージが届いたら,1秒おきに催促のメッセージを3回出力します。それをやっているのがdosing_notify内にある
setTimeout(dosing_remind, 1000, timing, counter);です。引数にtimingとcounterを設定して1秒後に関数dosing_remindを呼び出しなさいという意味です。
関数dosing_remindではcounterを1upして,既定の回数(ここでは3回)を超えたら「回数オーバー」と出力します。超えなかったら薬の服用の催促メッセージとその出力回数をコンソールに出力し,1秒後にdosing_remindが起動するように設定します。
実行結果を以下に示します。
semi2017kumw@semi2017ehr:~/calendar/sample$ node timer-sample.js 朝のお薬の時間です 朝のお薬を飲んでください(1回目) 朝のお薬を飲んでください(2回目) 朝のお薬を飲んでください(3回目) 回数オーバー 昼のお薬の時間です 昼のお薬を飲んでください(1回目) 昼のお薬を飲んでください(2回目) 昼のお薬を飲んでください(3回目) 回数オーバー 夜のお薬の時間です 夜のお薬を飲んでください(1回目) 夜のお薬を飲んでください(2回目) 夜のお薬を飲んでください(3回目) 回数オーバー semi2017kumw@semi2017ehr:~/calendar/sample$
0 件のコメント:
コメントを投稿