12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 |
- "use strict";
- /**
- * This is apparently a bit like a Jquery deferred, hence the name
- */
- class Deferred {
- constructor(Promise) {
- this._state = Deferred.PENDING;
- this._resolve = undefined;
- this._reject = undefined;
- this._promise = new Promise((resolve, reject) => {
- this._resolve = resolve;
- this._reject = reject;
- });
- }
- get state() {
- return this._state;
- }
- get promise() {
- return this._promise;
- }
- reject(reason) {
- if (this._state !== Deferred.PENDING) {
- return;
- }
- this._state = Deferred.REJECTED;
- this._reject(reason);
- }
- resolve(value) {
- if (this._state !== Deferred.PENDING) {
- return;
- }
- this._state = Deferred.FULFILLED;
- this._resolve(value);
- }
- }
- // TODO: should these really live here? or be a seperate 'state' enum
- Deferred.PENDING = "PENDING";
- Deferred.FULFILLED = "FULFILLED";
- Deferred.REJECTED = "REJECTED";
- module.exports = Deferred;
|