Explorar o código

Add attributes to resolveable promise to detect its resolved state

JC Brand %!s(int64=6) %!d(string=hai) anos
pai
achega
c5309f9210
Modificáronse 1 ficheiros con 19 adicións e 1 borrados
  1. 19 1
      src/headless/utils/core.js

+ 19 - 1
src/headless/utils/core.js

@@ -314,12 +314,30 @@ u.getResolveablePromise = function () {
     /* Returns a promise object on which `resolve` or `reject` can be
     /* Returns a promise object on which `resolve` or `reject` can be
      * called.
      * called.
      */
      */
-    const wrapper = {};
+    const wrapper = {
+        isResolved: false,
+        isPending: true,
+        isRejected: false
+    };
     const promise = new Promise((resolve, reject) => {
     const promise = new Promise((resolve, reject) => {
         wrapper.resolve = resolve;
         wrapper.resolve = resolve;
         wrapper.reject = reject;
         wrapper.reject = reject;
     })
     })
     _.assign(promise, wrapper);
     _.assign(promise, wrapper);
+    promise.then(
+        function (v) {
+            promise.isResolved = true;
+            promise.isPending = false;
+            promise.isRejected = false;
+            return v;
+        },
+        function (e) {
+            promise.isResolved = false;
+            promise.isPending = false;
+            promise.isRejected = true;
+            throw (e);
+        }
+    );
     return promise;
     return promise;
 };
 };