浏览代码

Add attributes to resolveable promise to detect its resolved state

JC Brand 6 年之前
父节点
当前提交
c5309f9210
共有 1 个文件被更改,包括 19 次插入1 次删除
  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
      * called.
      */
-    const wrapper = {};
+    const wrapper = {
+        isResolved: false,
+        isPending: true,
+        isRejected: false
+    };
     const promise = new Promise((resolve, reject) => {
         wrapper.resolve = resolve;
         wrapper.reject = reject;
     })
     _.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;
 };