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()
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 te = new TaskExecutor<number>(2, async task => {
await delay(task)
@ -36,7 +36,13 @@ describe('TaskExecutor', () => {
})
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>
}
interface ITaskEvents {
success: void
failure: Error
interface ITaskEventHandler {
success: () => void
failure: (err: Error) => void
}
export interface ITaskExecutor<T> {
@ -15,10 +15,10 @@ export interface ITaskExecutor<T> {
wait(): Promise<void>
addListener<E extends keyof ITaskEvents>(
event: E, listener: (value: ITaskEvents[E]) => void): void
removeListener<E extends keyof ITaskEvents>(
event: E, listener: (value: ITaskEvents[E]) => void): void
addListener<E extends keyof ITaskEventHandler>(
event: E, listener: ITaskEventHandler[E]): void
removeListener<E extends keyof ITaskEventHandler>(
event: E, listener: ITaskEventHandler[E]): void
}
let counter = 0
@ -34,12 +34,12 @@ export class TaskExecutor<T> implements ITaskExecutor<T> {
) {
}
addListener<E extends keyof ITaskEvents>(
event: E, listener: (value: ITaskEvents[E]) => void): void {
addListener<E extends keyof ITaskEventHandler>(
event: E, listener: ITaskEventHandler[E]): void {
this.events.addListener(event, listener)
}
removeListener<E extends keyof ITaskEvents>(
event: E, listener: (value: ITaskEvents[E]) => void): void {
removeListener<E extends keyof ITaskEventHandler>(
event: E, listener: ITaskEventHandler[E]): void {
this.events.removeListener(event, listener)
}