Fix types of event handlers in TaskExecutor

This commit is contained in:
Jerko Steiner 2019-07-30 22:55:18 +08:00
parent faf76ec76a
commit fdfe356ded
2 changed files with 18 additions and 12 deletions

View File

@ -19,7 +19,7 @@ describe('TaskExecutor', () => {
await te.wait() await te.wait()
expect(results).toEqual([10, 5, 7]) expect(results).toEqual([10, 5, 7])
}) })
it.only('executes tasks in different order', async () => { it('executes tasks in different order', async () => {
const results: number[] = [] const results: number[] = []
const te = new TaskExecutor<number>(2, async task => { const te = new TaskExecutor<number>(2, async task => {
await delay(task) await delay(task)
@ -36,7 +36,13 @@ describe('TaskExecutor', () => {
}) })
describe('error handling', () => { describe('error handling', () => {
it('does not fail on error', async () => {
})
it('triggers failure event on error', async () => {
})
}) })
}) })

View File

@ -5,9 +5,9 @@ export interface ITask<T> {
execute(): Promise<void> execute(): Promise<void>
} }
interface ITaskEvents { interface ITaskEventHandler {
success: void success: () => void
failure: Error failure: (err: Error) => void
} }
export interface ITaskExecutor<T> { export interface ITaskExecutor<T> {
@ -15,10 +15,10 @@ export interface ITaskExecutor<T> {
wait(): Promise<void> wait(): Promise<void>
addListener<E extends keyof ITaskEvents>( addListener<E extends keyof ITaskEventHandler>(
event: E, listener: (value: ITaskEvents[E]) => void): void event: E, listener: ITaskEventHandler[E]): void
removeListener<E extends keyof ITaskEvents>( removeListener<E extends keyof ITaskEventHandler>(
event: E, listener: (value: ITaskEvents[E]) => void): void event: E, listener: ITaskEventHandler[E]): void
} }
let counter = 0 let counter = 0
@ -34,12 +34,12 @@ export class TaskExecutor<T> implements ITaskExecutor<T> {
) { ) {
} }
addListener<E extends keyof ITaskEvents>( addListener<E extends keyof ITaskEventHandler>(
event: E, listener: (value: ITaskEvents[E]) => void): void { event: E, listener: ITaskEventHandler[E]): void {
this.events.addListener(event, listener) this.events.addListener(event, listener)
} }
removeListener<E extends keyof ITaskEvents>( removeListener<E extends keyof ITaskEventHandler>(
event: E, listener: (value: ITaskEvents[E]) => void): void { event: E, listener: ITaskEventHandler[E]): void {
this.events.removeListener(event, listener) this.events.removeListener(event, listener)
} }