use settimeout and setinterval in serviceWorker
This commit is contained in:
parent
451dd746da
commit
451c9884dc
@ -18,71 +18,53 @@
|
|||||||
* Imports.
|
* Imports.
|
||||||
*/
|
*/
|
||||||
import { Logger } from "@gnu-taler/taler-util";
|
import { Logger } from "@gnu-taler/taler-util";
|
||||||
import { TimerAPI, TimerHandle } from "@gnu-taler/taler-wallet-core";
|
import { timer, TimerAPI, TimerHandle } from "@gnu-taler/taler-wallet-core";
|
||||||
|
|
||||||
|
|
||||||
const nullTimerHandle = {
|
|
||||||
clear() {
|
|
||||||
// do nothing
|
|
||||||
return;
|
|
||||||
},
|
|
||||||
unref() {
|
|
||||||
// do nothing
|
|
||||||
return;
|
|
||||||
},
|
|
||||||
};
|
|
||||||
|
|
||||||
const logger = new Logger("ServiceWorkerTimerGroup.ts");
|
const logger = new Logger("ServiceWorkerTimerGroup.ts");
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Implementation of [[TimerAPI]] using alarm API
|
* Implementation of [[TimerAPI]] using alarm API
|
||||||
*/
|
*/
|
||||||
export class ServiceWorkerTimerAPI implements TimerAPI {
|
export class ServiceWorkerTimerAPI implements TimerAPI {
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Call a function every time the delay given in milliseconds passes.
|
* Call a function every time the delay given in milliseconds passes.
|
||||||
*/
|
*/
|
||||||
every(delayMs: number, callback: () => void): TimerHandle {
|
every(delayMs: number, callback: VoidFunction): TimerHandle {
|
||||||
const seconds = delayMs / 1000;
|
const seconds = delayMs / 1000;
|
||||||
const periodInMinutes = Math.round(seconds < 61 ? 1 : seconds / 60);
|
const periodInMinutes = Math.round(seconds < 61 ? 1 : seconds / 60);
|
||||||
|
|
||||||
logger.trace(`creating a alarm every ${periodInMinutes} ${delayMs}`)
|
logger.info(`creating a alarm every ${periodInMinutes} min, intended delay was ${delayMs}`)
|
||||||
chrome.alarms.create("wallet-worker", { periodInMinutes })
|
// chrome.alarms.create("wallet-worker", { periodInMinutes })
|
||||||
chrome.alarms.onAlarm.addListener((a) => {
|
// chrome.alarms.onAlarm.addListener((a) => {
|
||||||
logger.trace(`alarm called, every: ${a.name}`)
|
// logger.info(`alarm called, every: ${a.name}`)
|
||||||
callback()
|
// callback()
|
||||||
})
|
// })
|
||||||
|
|
||||||
return new AlarmHandle();
|
const p = timer.every(delayMs, callback)
|
||||||
|
return p;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Call a function after the delay given in milliseconds passes.
|
* Call a function after the delay given in milliseconds passes.
|
||||||
*/
|
*/
|
||||||
after(delayMs: number, callback: () => void): TimerHandle {
|
after(delayMs: number, callback: VoidFunction): TimerHandle {
|
||||||
const seconds = delayMs / 1000;
|
const seconds = delayMs / 1000;
|
||||||
const delayInMinutes = Math.round(seconds < 61 ? 1 : seconds / 60);
|
const delayInMinutes = Math.round(seconds < 61 ? 1 : seconds / 60);
|
||||||
|
|
||||||
logger.trace(`creating a alarm after ${delayInMinutes} ${delayMs}`)
|
logger.info(`creating a alarm after ${delayInMinutes} min, intended delay was ${delayMs}`)
|
||||||
chrome.alarms.create("wallet-worker", { delayInMinutes })
|
chrome.alarms.create("wallet-worker", { delayInMinutes })
|
||||||
chrome.alarms.onAlarm.addListener((a) => {
|
// chrome.alarms.onAlarm.addListener((a) => {
|
||||||
logger.trace(`alarm called, after: ${a.name}`)
|
// logger.info(`alarm called, after: ${a.name}`)
|
||||||
callback();
|
// callback();
|
||||||
})
|
// })
|
||||||
return new AlarmHandle();
|
|
||||||
}
|
|
||||||
|
const p = timer.after(delayMs, callback);
|
||||||
}
|
|
||||||
|
return p
|
||||||
class AlarmHandle implements TimerHandle {
|
|
||||||
|
|
||||||
clear(): void {
|
|
||||||
chrome.alarms.clear("wallet-worker", (result) => {
|
|
||||||
logger.info(`Alarm 'wallet-worker' was cleared: ${result}`)
|
|
||||||
})
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
unref(): void {
|
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user