Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 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 | 66x 66x 8x 8x 8x 30x 30x 30x 30x | /*
* Copyright 2021 Harness Inc. All rights reserved.
* Use of this source code is governed by the PolyForm Shield 1.0.0 license
* that can be found in the licenses directory at the root of this repository, also available at
* https://polyformproject.org/wp-content/uploads/2020/06/PolyForm-Shield-1.0.0.txt.
*/
export class PubSubAction<TTypes, T, TResult> {
private subMap = new Map<TTypes, Array<(arg: T) => Promise<TResult>>>()
subscribe(type: TTypes, cb: (arg: T) => Promise<TResult>): void {
const item = this.subMap.get(type)
Iif (item) {
item.push(cb)
this.subMap.set(type, item)
} else {
this.subMap.set(type, [cb])
}
}
publish(type: TTypes, arg: T): Promise<TResult[]> {
const item = this.subMap.get(type)
const promiseAr: Array<Promise<TResult>> = []
Iif (item) {
item.forEach(cb => {
promiseAr.push(cb(arg))
})
}
return Promise.all(promiseAr)
}
unsubscribe(type: TTypes): void {
this.subMap.delete(type)
}
unsubscribeAll(): void {
this.subMap.clear()
}
}
|