1- export function unsubscribeListener ( subscribers , listener ) {
1+ function unsubscribeListener ( subscribers , listener ) {
22 const index = subscribers . indexOf ( listener ) ;
33 if ( index >= 0 ) subscribers . splice ( index , 1 ) ;
44}
55
6+ /**
7+ * Subscribe listener and get function for unsubscribe
8+ *
9+ * @param subscribers {array} subscribers array
10+ * @param listener {function} callback to invoke on notification
11+ * @return {function(): void } function which will unsubscribe listener
12+ */
613export function subscribeListener ( subscribers , listener ) {
714 const index = subscribers . indexOf ( listener ) ;
815 if ( index < 0 ) subscribers . push ( listener ) ;
916 return ( ) => unsubscribeListener ( subscribers , listener ) ;
1017}
1118
19+ /**
20+ * Inform listeners and pass parameters
21+ *
22+ * @param origSubscribers {array} subscribers
23+ * @param params parameters to pass to listener
24+ */
1225export function informListeners ( origSubscribers , ...params ) {
1326 const subscribers = Object . assign ( [ ] , origSubscribers ) ;
1427
@@ -25,16 +38,24 @@ export function informListeners(origSubscribers, ...params) {
2538 if ( ! unsubscribe ) {
2639 unsubscribe = [ ] ;
2740 }
28- unsubscribe . push ( subscriber ) ;
29- console . error ( "GlobalSettingsHandler listener error for " , i , subscriber , params , subscribers , e )
41+ Array . push . call ( unsubscribe , subscriber ) ;
42+ console . error ( "informListeners() listener error for " , i , subscriber , params , subscribers , e ) ;
3043 }
3144 }
3245
3346 if ( unsubscribe ) {
34- unsubscribe . forEach ( ( subscriber ) => unsubscribeListener ( subscribers , subscriber ) ) ;
47+ Array . forEach . call ( unsubscribe , ( subscriber ) => unsubscribeListener ( origSubscribers , subscriber ) ) ;
3548 }
3649}
3750
51+ /**
52+ * Create subscriber with subscriptions to N signals
53+ *
54+ * Last argument is the callback function for all subscriptions
55+ *
56+ * Other arguments are targets supporting subscribe(function(){}) method to generate callback and returning function
57+ * to call to unsubscribe
58+ */
3859export class Subscriber {
3960 constructor ( ) {
4061 this . _unsubscribe = [ ] ;
@@ -55,6 +76,9 @@ export class Subscriber {
5576 this . unsubscribe = this . unsubscribe . bind ( this ) ;
5677 }
5778
79+ /**
80+ * Unsubscribe from all subscriptions
81+ */
5882 unsubscribe ( ) {
5983 let tmp = this . _unsubscribe ;
6084 this . _unsubscribe = null ;
0 commit comments