Procházet zdrojové kódy

[MERGE #5138 @kfarnung] Promise API feedback

Merge pull request #5138 from kfarnung:promises
Kyle Farnung před 7 roky
rodič
revize
9c82675e54

+ 10 - 10
bin/NativeTests/JsRTApiTest.cpp

@@ -2676,12 +2676,12 @@ namespace JsRTApiTest
         // Create resolvable promise
         REQUIRE(JsCreatePromise(&promise, &resolve, &reject) == JsNoError);
 
-        JsPromiseState state = JsPromiseState_Pending;
+        JsPromiseState state = JsPromiseStatePending;
         REQUIRE(JsGetPromiseState(promise, &state) == JsNoError);
-        CHECK(state == JsPromiseState_Pending);
+        CHECK(state == JsPromiseStatePending);
 
         result = JS_INVALID_REFERENCE;
-        CHECK(JsGetPromiseResult(promise, &result) == JsErrorInvalidArgument);
+        CHECK(JsGetPromiseResult(promise, &result) == JsErrorPromisePending);
         CHECK(result == JS_INVALID_REFERENCE);
 
         JsValueRef num = JS_INVALID_REFERENCE;
@@ -2690,9 +2690,9 @@ namespace JsRTApiTest
         std::array<JsValueRef, 2> args{ GetUndefined(), num };
         REQUIRE(JsCallFunction(resolve, args.data(), static_cast<unsigned short>(args.size()), &result) == JsNoError);
 
-        state = JsPromiseState_Pending;
+        state = JsPromiseStatePending;
         REQUIRE(JsGetPromiseState(promise, &state) == JsNoError);
-        CHECK(state == JsPromiseState_Fulfilled);
+        CHECK(state == JsPromiseStateFulfilled);
 
         result = JS_INVALID_REFERENCE;
         REQUIRE(JsGetPromiseResult(promise, &result) == JsNoError);
@@ -2704,12 +2704,12 @@ namespace JsRTApiTest
         // Create rejectable promise
         REQUIRE(JsCreatePromise(&promise, &resolve, &reject) == JsNoError);
 
-        state = JsPromiseState_Pending;
+        state = JsPromiseStatePending;
         REQUIRE(JsGetPromiseState(promise, &state) == JsNoError);
-        CHECK(state == JsPromiseState_Pending);
+        CHECK(state == JsPromiseStatePending);
 
         result = JS_INVALID_REFERENCE;
-        CHECK(JsGetPromiseResult(promise, &result) == JsErrorInvalidArgument);
+        CHECK(JsGetPromiseResult(promise, &result) == JsErrorPromisePending);
         CHECK(result == JS_INVALID_REFERENCE);
 
         num = JS_INVALID_REFERENCE;
@@ -2718,9 +2718,9 @@ namespace JsRTApiTest
         args = { GetUndefined(), num };
         REQUIRE(JsCallFunction(reject, args.data(), static_cast<unsigned short>(args.size()), &result) == JsNoError);
 
-        state = JsPromiseState_Pending;
+        state = JsPromiseStatePending;
         REQUIRE(JsGetPromiseState(promise, &state) == JsNoError);
-        CHECK(state == JsPromiseState_Rejected);
+        CHECK(state == JsPromiseStateRejected);
 
         result = JS_INVALID_REFERENCE;
         REQUIRE(JsGetPromiseResult(promise, &result) == JsNoError);

+ 4 - 0
lib/Jsrt/ChakraCommon.h

@@ -230,6 +230,10 @@ typedef unsigned short uint16_t;
         /// </summary>
         JsNoWeakRefRequired,
         /// <summary>
+        ///     The <c>Promise</c> object is still in the pending state.
+        /// </summary>
+        JsErrorPromisePending,
+        /// <summary>
         ///     Category of errors that relates to errors occurring within the engine itself.
         /// </summary>
         JsErrorCategoryEngine = 0x20000,

+ 3 - 3
lib/Jsrt/ChakraCore.h

@@ -63,9 +63,9 @@ typedef enum JsModuleHostInfoKind
 /// </summary>
 typedef enum _JsPromiseState
 {
-    JsPromiseState_Pending = 0x0,
-    JsPromiseState_Fulfilled = 0x1,
-    JsPromiseState_Rejected = 0x2
+    JsPromiseStatePending = 0x0,
+    JsPromiseStateFulfilled = 0x1,
+    JsPromiseStateRejected = 0x2
 } JsPromiseState;
 
 /// <summary>

+ 4 - 4
lib/Jsrt/Jsrt.cpp

@@ -5120,7 +5120,7 @@ CHAKRA_API JsGetPromiseState(_In_ JsValueRef promise, _Out_ JsPromiseState *stat
         VALIDATE_INCOMING_REFERENCE(promise, scriptContext);
         PARAM_NOT_NULL(state);
 
-        *state = JsPromiseState_Pending;
+        *state = JsPromiseStatePending;
 
         if (!Js::JavascriptPromise::Is(promise))
         {
@@ -5133,11 +5133,11 @@ CHAKRA_API JsGetPromiseState(_In_ JsValueRef promise, _Out_ JsPromiseState *stat
         switch (status)
         {
         case Js::JavascriptPromise::PromiseStatus::PromiseStatusCode_HasRejection:
-            *state = JsPromiseState_Rejected;
+            *state = JsPromiseStateRejected;
             break;
 
         case Js::JavascriptPromise::PromiseStatus::PromiseStatusCode_HasResolution:
-            *state = JsPromiseState_Fulfilled;
+            *state = JsPromiseStateFulfilled;
             break;
         }
 
@@ -5165,7 +5165,7 @@ CHAKRA_API JsGetPromiseResult(_In_ JsValueRef promise, _Out_ JsValueRef *result)
 
         if (jsResult == nullptr)
         {
-            return JsErrorInvalidArgument;
+            return JsErrorPromisePending;
         }
 
         *result = (JsValueRef)jsResult;