Simple but accurate alarm that makes use of high-resolution timer. The algorithm is inspired by nanotimer, written by Kevin Briggs.

Marten Lohstroh (marten@berkeley.edu)

Constructors

Properties

active: boolean = false

Indicates whether the alarm has been set or not.

deferredRef: undefined | Timeout

Handle for regular timeout, used for delays > 25 ms.

hiResDelay: [number, number] = ...

The delay interval in high resolution; tuple of seconds and nanoseconds.

hiResStart: [number, number] = ...

Start of the delay interval; tuple of seconds and nanoseconds.

immediateRef: undefined | Immediate

Handle for immediate, used for polling once the remaining delay is < 25 ms.

loResDelay: number = 0

Delay in terms of milliseconds, used when deferring to regular timeout.

Methods

  • Set the alarm.

    Parameters

    • task: (() => void)

      The task to be performed.

        • (): void
        • Returns void

    • delay: TimeValue

      The time has to elapse before the task can be performed.

    • Optionalcallback: ((waitTime: TimeValue) => void)

      Optional callback used to report the wait time.

        • (waitTime): void
        • Parameters

          Returns void

    Returns void

  • Disable any scheduled timeouts or immediate events, and set the timer to inactive.

    Returns void