Alarms API

Alarms API (chrome.alarms) используется для периодического запуска кода или в определённое время. Для него нужно указать в файле манифесте доступ alarms. В листинге 3-23 указан код расширения с использованием Alarms.

Рисунок 3-30. Демонстрация API: Notifications API

Рисунок 3-30. Демонстрация API: Notifications API.

Для создания alarm используется метод chrome.alarms.create, который принимает два параметра alarmName(тип строка) и alarmInfo(объект). В alarmInfoвходит описание, когда и как должна выполниться задача. Начало выполнения указывается в свойстве whenили delayInMinutes.

Рисунок 3-31. Демонстрация API: Notifications API

Рисунок 3-31. Демонстрация API: Notifications API.

Если задан параметр periodInMinutes, то Alarm спустя указанных минут, будет периодично выполнять слушатель chrome.alarms.onAlarm. Сам слушатель получает функцию callback, в которую передаётся объект Alarm, содержащий имя, запланированное время (scheduledTime) и periodInMinutes. Результат работы данного расширения показан на рисунке 3-26.

Рисунок 3-32. Демонстрация API: Notifications API

Рисунок 3-32. Демонстрация API: Notifications API.

Примечание:
Предела в количестве вызовов alarm нет, но для уменьшения нагрузки, минимальный интервал между двумя вызовами составляет одну минуту.

Листинг 3-23. Chapter3/AlarmsAPI/event_script.js
//region {переменные и функции}
var greeting = "Hello World!";
var count = 0;
var alarmName = "testAlarm";
var alarmInfo = {
    when : Date.now() + 6000,
    periodInMinutes : 1 //Вызываем каждую минуту
};
//end-region

//region {вычисления}
console.log(greeting);
chrome.alarms.clearAll();
chrome.alarms.onAlarm.addListener(function(alarm) {
    console.log("onAlarm-" + ++count);
});
chrome.alarms.create(alarmName,alarmInfo);
//end-region

В листинге 3-23 для сброса всех Alarm используется метод chrome.alarms.clearAll. Чтобы удалить определенный Alarm, используется chrome.alarms.clear(string name, function callback). Следует отметить, что функция обратного вызова callbackполучает объект Alarm, в то время когда метод getAllполучает аргумент типа массив.

  • chrome.alarms.get(string name, function callback)
  • chrome.alarms.getAll(function callback)

results matching ""

    No results matching ""