1
- export interface IClock {
1
+ export interface Clock {
2
2
readonly currentTime : number
3
3
readonly play : ( ) => void
4
4
readonly pause : ( ) => void
@@ -35,7 +35,7 @@ const DEFAULT_TOLERANCE = 10
35
35
*/
36
36
37
37
export default class Scheduler < T extends { readonly ntpTimestamp ?: number } > {
38
- private _clock : IClock
38
+ private _clock : Clock
39
39
private _handler : ( msg : T ) => void
40
40
private _tolerance : number
41
41
private _nextRun : number
@@ -52,7 +52,7 @@ export default class Scheduler<T extends { readonly ntpTimestamp?: number }> {
52
52
* @memberof Scheduler
53
53
*/
54
54
constructor (
55
- clock : IClock ,
55
+ clock : Clock ,
56
56
handler : ( msg : T ) => void ,
57
57
tolerance = DEFAULT_TOLERANCE ,
58
58
) {
@@ -148,10 +148,14 @@ export default class Scheduler<T extends { readonly ntpTimestamp?: number }> {
148
148
}
149
149
// There is at least one message in the FIFO queue, either
150
150
// display it, or re-schedule the method for later execution
151
- let timeToPresent : number = 0
151
+ let timeToPresent = 0
152
152
let currentMessage : T
153
153
do {
154
- currentMessage = this . _fifo . shift ( ) !
154
+ const msg = this . _fifo . shift ( )
155
+ if ( msg === undefined ) {
156
+ throw new Error ( 'internal error: message should never be undefined' )
157
+ }
158
+ currentMessage = msg
155
159
const ntpTimestamp = currentMessage . ntpTimestamp
156
160
if ( ntpTimestamp === undefined ) {
157
161
continue
0 commit comments