ex12-01-7-2
実行結果
ログ追加: 海の監視初日。勤務開始(1741962505412)
ソース
class Log {
constructor() {
this.messages = [];
}
add(message) {
const now = Date.now(); /* 現在時刻を表す整数。15章参照 */
console.log(`ログ追加: ${message}(${now})`);
this.messages.push({ message, timestamp: now });
}
// #@@range_begin(list1)
[Symbol.iterator]() {
return this.messages[Symbol.iterator]();
}
// #@@range_end(list1)
/*
[Symbol.iterator]() {
let i = 0;
const messages = this.messages;
return {
next: () => i >= messages.length ?
{value: undefined, done: true} : {value: messages[i++], done: false}
}
} // [Symbol.iterator]の終わり
*/
}
const log = new Log();
log.add("海の監視初日。勤務開始");
// しばらくして(時間の経過をsetTimeoutを使ってシミュレート)
setTimeout(function() {log.add("クジラを見た");}, 3*1000); /* 3秒後 */
// しばらくして
setTimeout(function() {log.add("1艘の船を見た");}, 7*1000);
//...
setTimeout(function() {log.add("監視終了");}, 9*1000);
setTimeout(function () {
console.log(`-本日の業務報告- (${new Date()})`); // 現在日時を表示
for(let entry of log) {
const date = new Date(entry.timestamp); // 人間が読める形式に変換(15章参照)
console.log(`${entry.message} (${date})`);
}
}, 10*1000); /* 10秒後 */
/* 実行結果
ログ追加: 海の監視初日。勤務開始(1478504798122)
ログ追加: クジラを見た(1478504801137)
ログ追加: 1艘の船を見た(1478504805137)
ログ追加: 監視終了(1478504807141)
-本日の業務報告- (Mon Nov 07 2016 16:46:48 GMT+0900 (JST))
海の監視初日。勤務開始 (Mon Nov 07 2016 16:46:38 GMT+0900 (JST))
クジラを見た (Mon Nov 07 2016 16:46:41 GMT+0900 (JST))
1艘の船を見た (Mon Nov 07 2016 16:46:45 GMT+0900 (JST))
監視終了 (Mon Nov 07 2016 16:46:47 GMT+0900 (JST))
*/