@zowe/imperative
Version:
framework for building configurable CLIs
51 lines • 1.86 kB
JavaScript
;
/*
* This program and the accompanying materials are made available under the terms of the
* Eclipse Public License v2.0 which accompanies this distribution, and is available at
* https://www.eclipse.org/legal/epl-v20.html
*
* SPDX-License-Identifier: EPL-2.0
*
* Copyright Contributors to the Zowe Project.
*
*/
Object.defineProperty(exports, "__esModule", { value: true });
exports.DeferredPromise = exports.DeferredPromiseStatus = void 0;
/* Status of the deferred promise */
var DeferredPromiseStatus;
(function (DeferredPromiseStatus) {
DeferredPromiseStatus["Pending"] = "pending";
DeferredPromiseStatus["Resolved"] = "resolved";
DeferredPromiseStatus["Rejected"] = "rejected";
})(DeferredPromiseStatus || (exports.DeferredPromiseStatus = DeferredPromiseStatus = {}));
/**
* @brief Externally control the resolution and rejection of a promise.
*
* @details
* Creates a promise with accessible `resolve` and `reject` methods, enabling external entities to
* settle the promise based on custom logic or asynchronous events. This is particularly useful when
* the promise's outcome depends on factors outside the immediate context.
*/
class DeferredPromise {
constructor() {
this.mStatus = DeferredPromiseStatus.Pending;
this.promise = new Promise((resolve, reject) => {
this.resolve = (value) => {
this.mStatus = DeferredPromiseStatus.Resolved;
resolve(value);
};
this.reject = (err) => {
this.mStatus = DeferredPromiseStatus.Rejected;
reject(err);
};
});
}
/**
* @returns {PromiseStatus} The status of the deferred promise
*/
get status() {
return this.mStatus;
}
}
exports.DeferredPromise = DeferredPromise;
//# sourceMappingURL=DeferredPromise.js.map