diff options
| author | Pinapelz <yukais@pinapelz.com> | 2025-06-28 17:26:46 -0700 |
|---|---|---|
| committer | Pinapelz <yukais@pinapelz.com> | 2025-06-28 17:43:56 -0700 |
| commit | e4fa1e69e7ebfb627c7198fd1a9881e9327ec4d4 (patch) | |
| tree | 06284a538a6008eca75051399e47db4e5d50301c /node_modules/rxjs/dist/esm/internal/scheduler/AsyncAction.js | |
initial commit: scaffolding
Diffstat (limited to 'node_modules/rxjs/dist/esm/internal/scheduler/AsyncAction.js')
| -rw-r--r-- | node_modules/rxjs/dist/esm/internal/scheduler/AsyncAction.js | 82 |
1 files changed, 82 insertions, 0 deletions
diff --git a/node_modules/rxjs/dist/esm/internal/scheduler/AsyncAction.js b/node_modules/rxjs/dist/esm/internal/scheduler/AsyncAction.js new file mode 100644 index 0000000..e0774f3 --- /dev/null +++ b/node_modules/rxjs/dist/esm/internal/scheduler/AsyncAction.js @@ -0,0 +1,82 @@ +import { Action } from './Action'; +import { intervalProvider } from './intervalProvider'; +import { arrRemove } from '../util/arrRemove'; +export class AsyncAction extends Action { + constructor(scheduler, work) { + super(scheduler, work); + this.scheduler = scheduler; + this.work = work; + this.pending = false; + } + schedule(state, delay = 0) { + var _a; + if (this.closed) { + return this; + } + this.state = state; + const id = this.id; + const scheduler = this.scheduler; + if (id != null) { + this.id = this.recycleAsyncId(scheduler, id, delay); + } + this.pending = true; + this.delay = delay; + this.id = (_a = this.id) !== null && _a !== void 0 ? _a : this.requestAsyncId(scheduler, this.id, delay); + return this; + } + requestAsyncId(scheduler, _id, delay = 0) { + return intervalProvider.setInterval(scheduler.flush.bind(scheduler, this), delay); + } + recycleAsyncId(_scheduler, id, delay = 0) { + if (delay != null && this.delay === delay && this.pending === false) { + return id; + } + if (id != null) { + intervalProvider.clearInterval(id); + } + return undefined; + } + execute(state, delay) { + if (this.closed) { + return new Error('executing a cancelled action'); + } + this.pending = false; + const error = this._execute(state, delay); + if (error) { + return error; + } + else if (this.pending === false && this.id != null) { + this.id = this.recycleAsyncId(this.scheduler, this.id, null); + } + } + _execute(state, _delay) { + let errored = false; + let errorValue; + try { + this.work(state); + } + catch (e) { + errored = true; + errorValue = e ? e : new Error('Scheduled action threw falsy error'); + } + if (errored) { + this.unsubscribe(); + return errorValue; + } + } + unsubscribe() { + if (!this.closed) { + const { id, scheduler } = this; + const { actions } = scheduler; + this.work = this.state = this.scheduler = null; + this.pending = false; + arrRemove(actions, this); + if (id != null) { + this.id = this.recycleAsyncId(scheduler, id, null); + } + this.delay = null; + super.unsubscribe(); + } + } +} +//# sourceMappingURL=AsyncAction.js.map
\ No newline at end of file |
