intern
Version:
Intern. A next-generation code testing stack for JavaScript.
62 lines • 2.23 kB
JavaScript
(function (factory) {
if (typeof module === "object" && typeof module.exports === "object") {
var v = factory(require, exports);
if (v !== undefined) module.exports = v;
}
else if (typeof define === "function" && define.amd) {
define(["require", "exports"], factory);
}
})(function (require, exports) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var Deferred = (function () {
function Deferred() {
var _this = this;
this.promise = new Promise(function (resolve, reject) {
_this._resolver = resolve;
_this._rejector = reject;
});
this.promise.then(function () { return _this._finalize; }, function () { return _this._finalize; });
}
Deferred.prototype.callback = function (callback) {
var dfd = this;
return this.rejectOnError(function () {
var args = [];
for (var _i = 0; _i < arguments.length; _i++) {
args[_i] = arguments[_i];
}
var returnValue = callback.apply(this, args);
dfd.resolve();
return returnValue;
});
};
Deferred.prototype.rejectOnError = function (callback) {
var dfd = this;
return function () {
var args = [];
for (var _i = 0; _i < arguments.length; _i++) {
args[_i] = arguments[_i];
}
try {
return callback.apply(this, args);
}
catch (error) {
dfd.reject(error);
}
};
};
Deferred.prototype.resolve = function (value) {
this._resolver(value);
};
Deferred.prototype.reject = function (error) {
this._rejector(error);
};
Deferred.prototype._finalize = function () {
this._resolver = function () { };
this._rejector = function () { };
};
return Deferred;
}());
exports.default = Deferred;
});
//# sourceMappingURL=Deferred.js.map