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
| const callbacks = {}
|
| export default function createCallbacks (namespace) {
| let scopedCallbacks = callbacks[namespace]
| if (!scopedCallbacks) {
| scopedCallbacks = {
| id: 1,
| callbacks: Object.create(null)
| }
| callbacks[namespace] = scopedCallbacks
| }
| return {
| get (id) {
| return scopedCallbacks.callbacks[id]
| },
| pop (id) {
| const callback = scopedCallbacks.callbacks[id]
| if (callback) {
| delete scopedCallbacks.callbacks[id]
| }
| return callback
| },
| push (callback) {
| const id = scopedCallbacks.id++
| scopedCallbacks.callbacks[id] = callback
| return id
| }
| }
| }
|
|