@@ -488,7 +488,7 @@ export class Emitter<T> {
488488 private readonly _leakageMon ?: LeakageMonitor ;
489489 private _disposed : boolean = false ;
490490 private _event ?: Event < T > ;
491- private _deliveryQueue : [ Listener < T > , T ] [ ] ;
491+ private _deliveryQueue ?: LinkedList < [ Listener < T > , T ] > ;
492492 protected _listeners ?: LinkedList < Listener < T > > ;
493493
494494 constructor ( options ?: EmitterOptions ) {
@@ -570,14 +570,14 @@ export class Emitter<T> {
570570 // the driver of this
571571
572572 if ( ! this . _deliveryQueue ) {
573- this . _deliveryQueue = [ ] ;
573+ this . _deliveryQueue = new LinkedList ( ) ;
574574 }
575575
576576 for ( let iter = this . _listeners . iterator ( ) , e = iter . next ( ) ; ! e . done ; e = iter . next ( ) ) {
577577 this . _deliveryQueue . push ( [ e . value , event ] ) ;
578578 }
579579
580- while ( this . _deliveryQueue . length > 0 ) {
580+ while ( this . _deliveryQueue . size > 0 ) {
581581 const [ listener , event ] = this . _deliveryQueue . shift ( ) ! ;
582582 try {
583583 if ( typeof listener === 'function' ) {
@@ -594,10 +594,10 @@ export class Emitter<T> {
594594
595595 dispose ( ) {
596596 if ( this . _listeners ) {
597- this . _listeners = undefined ;
597+ this . _listeners . clear ( ) ;
598598 }
599599 if ( this . _deliveryQueue ) {
600- this . _deliveryQueue . length = 0 ;
600+ this . _deliveryQueue . clear ( ) ;
601601 }
602602 if ( this . _leakageMon ) {
603603 this . _leakageMon . dispose ( ) ;
0 commit comments