Описание
Используйте API chrome.alarms
для планирования запуска кода периодически или в определенное время в будущем.
Разрешения
alarms
Манифест
Чтобы использовать API chrome.alarms
, объявите разрешение "alarms"
в манифесте :
{
"name": "My extension",
...
"permissions": [
"alarms"
],
...
}
Примеры
В следующих примерах показано, как использовать и реагировать на сигналы тревоги. Чтобы опробовать этот API, установите пример API сигнализации из репозитория chrome-extension-samples .
Установите будильник
В следующем примере устанавливается сигнал тревоги в Service Worker при установке расширения:
service-worker.js:
chrome.runtime.onInstalled.addListener(async ({ reason }) => {
if (reason !== 'install') {
return;
}
// Create an alarm so we have something to look at in the demo
await chrome.alarms.create('demo-default-alarm', {
delayInMinutes: 1,
periodInMinutes: 1
});
});
Реагировать на сигнал тревоги
В следующем примере устанавливается значок панели инструментов действий на основе названия сработавшего будильника.
service-worker.js:
chrome.alarms.onAlarm.addListener((alarm) => {
chrome.action.setIcon({
path: getIconPath(alarm.name),
});
});
Типы
Alarm
Характеристики
- имя
нить
Название этого будильника.
- периодВМинутах
номер необязательно
Если значение не равно нулю, сигнал тревоги повторяется и сработает снова через
periodInMinutes
минут. - запланированное время
число
Время срабатывания этого будильника, запланированное в миллисекундах после начала эпохи (например,
Date.now() + n
). Из соображений производительности будильник мог быть отложен на произвольную величину дольше этого времени.
AlarmCreateInfo
Характеристики
- delayInMinutes
номер необязательно
Длительность времени в минутах, по истечении которого должно сработать событие
onAlarm
. - периодВМинутах
номер необязательно
Если событие onAlarm установлено, оно будет срабатывать каждые
periodInMinutes
минут после начального события, указанного в параметреwhen
илиdelayInMinutes
. Если событие не установлено, будильник сработает только один раз. - когда
номер необязательно
Время, в которое должен сработать будильник, в миллисекундах после эпохи (например,
Date.now() + n
).
Методы
clear()
chrome.alarms.clear(
name?: string,
callback?: function,
): Promise<boolean>
Сбрасывает будильник с указанным именем.
Параметры
- имя
строка необязательная
Имя будильника, который нужно сбросить. По умолчанию — пустая строка.
- перезвонить
функция необязательна
Параметр
callback
выглядит так:(wasCleared: boolean) => void
- был очищен
булев
Возврат
Обещание<логическое>
Хром 91+Обещания поддерживаются только для Manifest V3 и более поздних версий, на других платформах необходимо использовать обратные вызовы.
clearAll()
chrome.alarms.clearAll(
callback?: function,
): Promise<boolean>
Сбрасывает все сигналы тревоги.
Параметры
- перезвонить
функция необязательна
Параметр
callback
выглядит так:(wasCleared: boolean) => void
- был очищен
булев
Возврат
Обещание<логическое>
Хром 91+Обещания поддерживаются только для Manifest V3 и более поздних версий, на других платформах необходимо использовать обратные вызовы.
create()
chrome.alarms.create(
name?: string,
alarmInfo: AlarmCreateInfo,
callback?: function,
): Promise<void>
Создаёт будильник. При наступлении времени, указанного в alarmInfo
, срабатывает событие onAlarm
. Если есть другой будильник с таким же именем (или без имени, если имя не указано), он будет отменён и заменён этим будильником.
Чтобы снизить нагрузку на компьютер пользователя, Chrome ограничивает срабатывание будильников максимум раз в 30 секунд, но может задерживать их на произвольное время. То есть, если установить значение delayInMinutes
или periodInMinutes
меньше 0.5
, оно не будет учтено и вызовет предупреждение. when
можно установить менее чем через 30 секунд после «now» без предупреждения, но будильник не будет срабатывать как минимум 30 секунд.
Чтобы облегчить отладку вашего приложения или расширения, после его загрузки в распакованном виде нет ограничений на частоту срабатывания будильника.
Параметры
- имя
строка необязательная
Необязательное имя для идентификации этого сигнала тревоги. По умолчанию — пустая строка.
- alarmInfo
Описывает, когда должен сработать будильник. Начальное время должно быть указано либо параметром
when
, либоdelayInMinutes
(но не обоими). Если заданperiodInMinutes
, будильник будет повторяться каждыеperiodInMinutes
минут после начального события. Если для повторяющегося будильника не заданы ниwhen
, ниdelayInMinutes
, в качестве значения по умолчанию дляdelayInMinutes
используетсяperiodInMinutes
. - перезвонить
функция необязательна
Хром 111+Параметр
callback
выглядит так:() => void
Возврат
Обещание<void>
Хром 111+Обещания поддерживаются только для Manifest V3 и более поздних версий, на других платформах необходимо использовать обратные вызовы.
get()
chrome.alarms.get(
name?: string,
callback?: function,
): Promise<Alarm | undefined>
Возвращает сведения об указанном сигнале тревоги.
Параметры
- имя
строка необязательная
Имя будильника, который нужно получить. По умолчанию — пустая строка.
- перезвонить
функция необязательна
Параметр
callback
выглядит так:(alarm?: Alarm) => void
- тревога
Сигнализация опционально
Возврат
Обещание< Сигнализация | не определено>
Хром 91+Обещания поддерживаются только для Manifest V3 и более поздних версий, на других платформах необходимо использовать обратные вызовы.
getAll()
chrome.alarms.getAll(
callback?: function,
): Promise<Alarm[]>
Получает массив всех будильников.
Параметры
Возврат
Обещание< Сигнализация []>
Хром 91+Обещания поддерживаются только для Manifest V3 и более поздних версий, на других платформах необходимо использовать обратные вызовы.