util_task_delayed_task.js

import Task from "./task.js";

/**
 * @module DelayedTask
 * @fileoverview Contains DelayedTask class.
 */

/**
 * @class
 * @extends Task
 * Task that runs after a set amount of time (delay).
 */
class DelayedTask extends Task {
    /**
     * Create a new delayed task.
     * @param {function} func Function to run after timer has run out
     * @param {number} delay Amount of time to wait before running (delay)
     * @constructor
     */
    constructor(func = () => {}, delay = 0) {
        super();

        this._func = func;

        this._timer = 0;
        this._delay = delay;
    }

    update(elapsed) {
        this._timer += elapsed;
        if (this._timer >= this._delay) {
            this._func();
            this._done = true;
        }
    }
}

export default DelayedTask;