Promise.js 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126
  1. (function() {
  2. var nodeEnv = typeof require !== 'undefined' && typeof process !== 'undefined';
  3. var __module = nodeEnv ? module : {exports:{}};
  4. var __filename = 'preview-scripts/assets/script/frameWork/Promise/Promise.js';
  5. var __require = nodeEnv ? function (request) {
  6. return cc.require(request);
  7. } : function (request) {
  8. return __quick_compile_project__.require(request, __filename);
  9. };
  10. function __define (exports, require, module) {
  11. if (!nodeEnv) {__quick_compile_project__.registerModule(__filename, module);}"use strict";
  12. cc._RF.push(module, 'b5bc4kuP55HLpcgnIg/vOrn', 'Promise');
  13. // script/frameWork/Promise/Promise.ts
  14. "use strict";
  15. Object.defineProperty(exports, "__esModule", { value: true });
  16. exports.NDeferred = exports.Deferred = void 0;
  17. /**
  18. *
  19. */
  20. var Deferred = /** @class */ (function () {
  21. function Deferred() {
  22. this._promise = null;
  23. this._resolve = null;
  24. this._reject = null;
  25. var self = this;
  26. self._promise = new Promise(function (resolve, reject) {
  27. self._resolve = resolve;
  28. self._reject = reject;
  29. });
  30. }
  31. Object.defineProperty(Deferred.prototype, "promise", {
  32. get: function () { return this._promise; },
  33. enumerable: false,
  34. configurable: true
  35. });
  36. Deferred.prototype.resolve = function (value) {
  37. if (this._resolve) {
  38. this._resolve.call(this._promise, value);
  39. this._resolve = null;
  40. }
  41. };
  42. Deferred.prototype.reject = function (reason) {
  43. if (this._reject) {
  44. this._reject.call(this._promise, reason);
  45. this._reject = null;
  46. }
  47. };
  48. return Deferred;
  49. }());
  50. exports.Deferred = Deferred;
  51. /**
  52. * 执行 n 次 resolve 后才执行真正的 resolve
  53. * 允许在执行前动态的添加执行次数
  54. */
  55. var NDeferred = /** @class */ (function () {
  56. function NDeferred(cnt) {
  57. this._promise = null;
  58. this._resolve = null;
  59. this._reject = null;
  60. this.m_Cnt = 0;
  61. var that = this;
  62. if (cnt <= 0) {
  63. throw "[NDeferred] 执行次数必须大于 0";
  64. }
  65. that.m_Cnt = cnt;
  66. that._promise = new Promise(function (resolve, reject) {
  67. that._resolve = function (p) {
  68. if (that.m_Cnt <= 0) {
  69. return;
  70. }
  71. ;
  72. --that.m_Cnt;
  73. if (that.m_Cnt === 0) {
  74. resolve(p);
  75. }
  76. };
  77. that._reject = reject;
  78. });
  79. }
  80. NDeferred.Create = function (cnt) { return new NDeferred(cnt); };
  81. /**
  82. * 动态增加执行所需次数
  83. */
  84. NDeferred.prototype.add = function () {
  85. var that = this;
  86. if (that.m_Cnt > 0) {
  87. ++that.m_Cnt;
  88. }
  89. else {
  90. throw "[NDeferred] 执行次数等于 0,表明 promise 已 resolve,不能再动态添加执行次数";
  91. }
  92. };
  93. NDeferred.prototype.addCnt = function (cnt) {
  94. var that = this;
  95. if (that.m_Cnt > 0) {
  96. that.m_Cnt += cnt;
  97. }
  98. else {
  99. throw "[NDeferred] 执行次数等于 0,表明 promise 已 resolve,不能再动态添加执行次数";
  100. }
  101. };
  102. Object.defineProperty(NDeferred.prototype, "promise", {
  103. get: function () { return this._promise; },
  104. enumerable: false,
  105. configurable: true
  106. });
  107. NDeferred.prototype.resolve = function (value) { this._resolve.call(this._promise, value); };
  108. NDeferred.prototype.reject = function (reason) { this._reject.call(this._promise, reason); };
  109. return NDeferred;
  110. }());
  111. exports.NDeferred = NDeferred;
  112. cc._RF.pop();
  113. }
  114. if (nodeEnv) {
  115. __define(__module.exports, __require, __module);
  116. }
  117. else {
  118. __quick_compile_project__.registerModuleFunc(__filename, function () {
  119. __define(__module.exports, __require, __module);
  120. });
  121. }
  122. })();
  123. //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFzc2V0cy9zY3JpcHQvZnJhbWVXb3JrL1Byb21pc2UvUHJvbWlzZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTs7R0FFRztBQUNIO0lBSUk7UUFIUSxhQUFRLEdBQWUsSUFBSyxDQUFDO1FBQzdCLGFBQVEsR0FBd0MsSUFBSyxDQUFDO1FBQ3RELFlBQU8sR0FBMkIsSUFBSyxDQUFDO1FBRTVDLElBQUksSUFBSSxHQUFHLElBQUksQ0FBQztRQUNoQixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksT0FBTyxDQUFDLFVBQUMsT0FBTyxFQUFFLE1BQU07WUFDeEMsSUFBSSxDQUFDLFFBQVEsR0FBRyxPQUFPLENBQUM7WUFDeEIsSUFBSSxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUM7UUFDMUIsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsc0JBQUksNkJBQU87YUFBWCxjQUE0QixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDOzs7T0FBQTtJQUNuRCwwQkFBTyxHQUFQLFVBQVEsS0FBUztRQUNiLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUNmLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDekMsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7U0FDeEI7SUFDTCxDQUFDO0lBQ0QseUJBQU0sR0FBTixVQUFPLE1BQVk7UUFDZixJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDZCxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1lBQ3pDLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO1NBQ3ZCO0lBQ0wsQ0FBQztJQUNMLGVBQUM7QUFBRCxDQXpCQSxBQXlCQyxJQUFBO0FBekJZLDRCQUFRO0FBMkJyQjs7O0dBR0c7QUFDSDtJQU1JLG1CQUFvQixHQUFXO1FBTHZCLGFBQVEsR0FBZSxJQUFLLENBQUM7UUFDN0IsYUFBUSxHQUF3QyxJQUFLLENBQUM7UUFDdEQsWUFBTyxHQUEyQixJQUFLLENBQUM7UUFDeEMsVUFBSyxHQUFXLENBQUMsQ0FBQztRQUd0QixJQUFNLElBQUksR0FBRyxJQUFJLENBQUM7UUFDbEIsSUFBSSxHQUFHLElBQUksQ0FBQyxFQUFFO1lBQ1YsTUFBTSx3QkFBd0IsQ0FBQztTQUNsQztRQUNELElBQUksQ0FBQyxLQUFLLEdBQUcsR0FBRyxDQUFDO1FBQ2pCLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxPQUFPLENBQUMsVUFBQyxPQUFPLEVBQUUsTUFBTTtZQUN4QyxJQUFJLENBQUMsUUFBUSxHQUFHLFVBQUMsQ0FBSTtnQkFDakIsSUFBSSxJQUFJLENBQUMsS0FBSyxJQUFJLENBQUMsRUFBRTtvQkFDakIsT0FBTztpQkFDVjtnQkFBQSxDQUFDO2dCQUNGLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQztnQkFDYixJQUFJLElBQUksQ0FBQyxLQUFLLEtBQUssQ0FBQyxFQUFFO29CQUNsQixPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUE7aUJBQ2I7WUFDTCxDQUFDLENBQUM7WUFDRixJQUFJLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQztRQUMxQixDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFuQk0sZ0JBQU0sR0FBYixVQUFrQixHQUFXLElBQW1CLE9BQU8sSUFBSSxTQUFTLENBQUssR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBcUJoRjs7T0FFRztJQUNILHVCQUFHLEdBQUg7UUFDSSxJQUFNLElBQUksR0FBRyxJQUFJLENBQUM7UUFDbEIsSUFBSSxJQUFJLENBQUMsS0FBSyxHQUFHLENBQUMsRUFBRTtZQUNoQixFQUFFLElBQUksQ0FBQyxLQUFLLENBQUM7U0FDaEI7YUFBTTtZQUNILE1BQU0sdURBQXVELENBQUM7U0FDakU7SUFDTCxDQUFDO0lBRUQsMEJBQU0sR0FBTixVQUFPLEdBQVc7UUFDZCxJQUFNLElBQUksR0FBRyxJQUFJLENBQUM7UUFDbEIsSUFBSSxJQUFJLENBQUMsS0FBSyxHQUFHLENBQUMsRUFBRTtZQUNoQixJQUFJLENBQUMsS0FBSyxJQUFJLEdBQUcsQ0FBQztTQUNyQjthQUFNO1lBQ0gsTUFBTSx1REFBdUQsQ0FBQztTQUNqRTtJQUNMLENBQUM7SUFFRCxzQkFBSSw4QkFBTzthQUFYLGNBQTRCLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7OztPQUFBO0lBQ25ELDJCQUFPLEdBQVAsVUFBUSxLQUFTLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDaEUsMEJBQU0sR0FBTixVQUFPLE1BQVksSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN0RSxnQkFBQztBQUFELENBbERBLEFBa0RDLElBQUE7QUFsRFksOEJBQVMiLCJmaWxlIjoiIiwic291cmNlUm9vdCI6Ii8iLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFxuICovXG5leHBvcnQgY2xhc3MgRGVmZXJyZWQ8VCA9IGFueT4ge1xuICAgIHByaXZhdGUgX3Byb21pc2U6IFByb21pc2U8VD4gPSBudWxsITtcbiAgICBwcml2YXRlIF9yZXNvbHZlOiAodmFsdWU6IFQgfCBQcm9taXNlTGlrZTxUPikgPT4gdm9pZCA9IG51bGwhO1xuICAgIHByaXZhdGUgX3JlamVjdDogKHJlYXNvbj86IGFueSkgPT4gdm9pZCA9IG51bGwhO1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBsZXQgc2VsZiA9IHRoaXM7XG4gICAgICAgIHNlbGYuX3Byb21pc2UgPSBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgICBzZWxmLl9yZXNvbHZlID0gcmVzb2x2ZTtcbiAgICAgICAgICAgIHNlbGYuX3JlamVjdCA9IHJlamVjdDtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgZ2V0IHByb21pc2UoKTogUHJvbWlzZTxUPiB7IHJldHVybiB0aGlzLl9wcm9taXNlOyB9XG4gICAgcmVzb2x2ZSh2YWx1ZT86IFQpIHtcbiAgICAgICAgaWYgKHRoaXMuX3Jlc29sdmUpIHtcbiAgICAgICAgICAgIHRoaXMuX3Jlc29sdmUuY2FsbCh0aGlzLl9wcm9taXNlLCB2YWx1ZSk7XG4gICAgICAgICAgICB0aGlzLl9yZXNvbHZlID0gbnVsbDtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZWplY3QocmVhc29uPzogYW55KSB7XG4gICAgICAgIGlmICh0aGlzLl9yZWplY3QpIHtcbiAgICAgICAgICAgIHRoaXMuX3JlamVjdC5jYWxsKHRoaXMuX3Byb21pc2UsIHJlYXNvbik7XG4gICAgICAgICAgICB0aGlzLl9yZWplY3QgPSBudWxsO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4vKipcbiAqIOaJp+ihjCBuIOasoSByZXNvbHZlIOWQjuaJjeaJp+ihjOecn+ato+eahCByZXNvbHZlXG4gKiDlhYHorrjlnKjmiafooYzliY3liqjmgIHnmoTmt7vliqDmiafooYzmrKHmlbBcbiAqL1xuZXhwb3J0IGNsYXNzIE5EZWZlcnJlZDxUID0gYW55PiB7XG4gICAgcHJpdmF0ZSBfcHJvbWlzZTogUHJvbWlzZTxUPiA9IG51bGwhO1xuICAgIHByaXZhdGUgX3Jlc29sdmU6ICh2YWx1ZTogVCB8IFByb21pc2VMaWtlPFQ+KSA9PiB2b2lkID0gbnVsbCE7XG4gICAgcHJpdmF0ZSBfcmVqZWN0OiAocmVhc29uPzogYW55KSA9PiB2b2lkID0gbnVsbCE7XG4gICAgcHJpdmF0ZSBtX0NudDogbnVtYmVyID0gMDtcbiAgICBzdGF0aWMgQ3JlYXRlPFRUPihjbnQ6IG51bWJlcik6IE5EZWZlcnJlZDxUVD4geyByZXR1cm4gbmV3IE5EZWZlcnJlZDxUVD4oY250KTsgfVxuICAgIHByaXZhdGUgY29uc3RydWN0b3IoY250OiBudW1iZXIpIHtcbiAgICAgICAgY29uc3QgdGhhdCA9IHRoaXM7XG4gICAgICAgIGlmIChjbnQgPD0gMCkge1xuICAgICAgICAgICAgdGhyb3cgXCJbTkRlZmVycmVkXSDmiafooYzmrKHmlbDlv4XpobvlpKfkuo4gMFwiO1xuICAgICAgICB9XG4gICAgICAgIHRoYXQubV9DbnQgPSBjbnQ7XG4gICAgICAgIHRoYXQuX3Byb21pc2UgPSBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgICB0aGF0Ll9yZXNvbHZlID0gKHA6IFQpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAodGhhdC5tX0NudCA8PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIC0tdGhhdC5tX0NudDtcbiAgICAgICAgICAgICAgICBpZiAodGhhdC5tX0NudCA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICByZXNvbHZlKHApXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHRoYXQuX3JlamVjdCA9IHJlamVjdDtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog5Yqo5oCB5aKe5Yqg5omn6KGM5omA6ZyA5qyh5pWwXG4gICAgICovXG4gICAgYWRkKCkge1xuICAgICAgICBjb25zdCB0aGF0ID0gdGhpcztcbiAgICAgICAgaWYgKHRoYXQubV9DbnQgPiAwKSB7XG4gICAgICAgICAgICArK3RoYXQubV9DbnQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aHJvdyBcIltORGVmZXJyZWRdIOaJp+ihjOasoeaVsOetieS6jiAw77yM6KGo5piOIHByb21pc2Ug5beyIHJlc29sdmXvvIzkuI3og73lho3liqjmgIHmt7vliqDmiafooYzmrKHmlbBcIjtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGFkZENudChjbnQ6IG51bWJlcikge1xuICAgICAgICBjb25zdCB0aGF0ID0gdGhpcztcbiAgICAgICAgaWYgKHRoYXQubV9DbnQgPiAwKSB7XG4gICAgICAgICAgICB0aGF0Lm1fQ250ICs9IGNudDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRocm93IFwiW05EZWZlcnJlZF0g5omn6KGM5qyh5pWw562J5LqOIDDvvIzooajmmI4gcHJvbWlzZSDlt7IgcmVzb2x2Ze+8jOS4jeiDveWGjeWKqOaAgea3u+WKoOaJp+ihjOasoeaVsFwiO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZ2V0IHByb21pc2UoKTogUHJvbWlzZTxUPiB7IHJldHVybiB0aGlzLl9wcm9taXNlOyB9XG4gICAgcmVzb2x2ZSh2YWx1ZT86IFQpIHsgdGhpcy5fcmVzb2x2ZS5jYWxsKHRoaXMuX3Byb21pc2UsIHZhbHVlKTsgfVxuICAgIHJlamVjdChyZWFzb24/OiBhbnkpIHsgdGhpcy5fcmVqZWN0LmNhbGwodGhpcy5fcHJvbWlzZSwgcmVhc29uKTsgfVxufVxuIl19