Blame view

天文台pc/tianwentai-ui/node_modules/motion-utils/dist/es/subscription-manager.mjs 1.21 KB
bc518174   王天杨   提交两个项目文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
  import { addUniqueItem, removeItem } from './array.mjs';
  
  class SubscriptionManager {
      constructor() {
          this.subscriptions = [];
      }
      add(handler) {
          addUniqueItem(this.subscriptions, handler);
          return () => removeItem(this.subscriptions, handler);
      }
      notify(a, b, c) {
          const numSubscriptions = this.subscriptions.length;
          if (!numSubscriptions)
              return;
          if (numSubscriptions === 1) {
              /**
               * If there's only a single handler we can just call it without invoking a loop.
               */
              this.subscriptions[0](a, b, c);
          }
          else {
              for (let i = 0; i < numSubscriptions; i++) {
                  /**
                   * Check whether the handler exists before firing as it's possible
                   * the subscriptions were modified during this loop running.
                   */
                  const handler = this.subscriptions[i];
                  handler && handler(a, b, c);
              }
          }
      }
      getSize() {
          return this.subscriptions.length;
      }
      clear() {
          this.subscriptions.length = 0;
      }
  }
  
  export { SubscriptionManager };
  //# sourceMappingURL=subscription-manager.mjs.map