Chrome拡張機能APIのEvent Pagesで一定時間おきになにか実行させる

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()を実行する。

ちなみにdelayInMinutesperiodInMinutesはその名の通り、単位はで、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.

しかも、負荷によっては遅延させられることもあるので、正確な時間おきに処理を実行することはできないようだ。

参考

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です