Event Pagesの場合、バックグラウンドページは使わなくなったら破棄されてしまうので、setTimeout
などでタイマーをしかけておいても動作しない。
そこで一定時間おきになにかを実行させたい場合は、alarms APIを使う。
基本的にはchrome.alarms.create
でアラーム定義をして、chrome.alarms.onAlarm.addListener
で動作を指定する。
// Create an alarm
chrome.alarms.create('NAME_OF_ALARM', { delayInMinutes : 1, periodInMinutes : 2 });
// Run something when the alarm goes off
chrome.alarms.onAlarm.addListener(function(alarm) {
if (alarm.name == 'NAME_OF_ALARM') {
doSomething();
}
});
上の例だと1分後から2分おきに、doSomething()
を実行する。
ちなみにdelayInMinutes
とperiodInMinutes
はその名の通り、単位は分で、1分未満にはできないので注意。
In order to reduce the load on the user’s machine, Chrome limits alarms to at most once every 1 minute but may delay them an arbitrary amount more.
しかも、負荷によっては遅延させられることもあるので、正確な時間おきに処理を実行することはできないようだ。