introduce TaskOnce

This commit is contained in:
2017-07-12 16:45:18 +02:00
parent 017c0789ca
commit a3699f2869
7 changed files with 101 additions and 4 deletions

View File

@ -1,7 +1,8 @@
export {Task,ITaskFunction} from './taskbuffer.classes.task'
export {Taskchain} from './taskbuffer.classes.taskchain'
export {Taskparallel} from './taskbuffer.classes.taskparallel'
export { Task, ITaskFunction } from './taskbuffer.classes.task'
export { Taskchain } from './taskbuffer.classes.taskchain'
export { Taskparallel } from './taskbuffer.classes.taskparallel'
export { TaskManager } from './taskbuffer.classes.taskmanager'
export { TaskOnce } from './taskbuffer.classes.taskonce'
// import for naming only
import './taskbuffer.classes.helpers'

View File

@ -0,0 +1,24 @@
import * as plugins from './taskbuffer.plugins'
import { Task, ITaskFunction} from './taskbuffer.classes.task'
/**
* TaskOnce is run exactly once, no matter how often it is triggered
*/
export class TaskOnce extends Task {
hasTriggered: boolean = false
constructor (optionsArg: {
name?: string,
taskFunction: ITaskFunction
}) {
super({
name: optionsArg.name,
taskFunction: async () => {
if (!this.hasTriggered) {
this.hasTriggered = true
await optionsArg.taskFunction()
}
}
})
}
}