OV.TaskRunner = class
{
    constructor ()
    {
        this.count = null;
        this.current = null;
        this.callbacks = null;
    }

	Run (count, callbacks)
	{
        this.count = count;
		this.current = 0;
        this.callbacks = callbacks;
        if (count === 0) {
            this.TaskReady ();
        } else {
            this.RunOnce ();
        }
	}

    RunOnce ()
    {
        let obj = this;
        setTimeout (function () {
            obj.callbacks.runTask (obj.current, obj.TaskReady.bind (obj));
        }, 0);
    }

    TaskReady ()
    {
        this.current += 1;
        if (this.current < this.count) {
            this.RunOnce ();
        } else {
            if (this.callbacks.onReady) {
                this.callbacks.onReady ();
            }
        }
    }
};
