From 145c76849975dde30ff5f2d83c7e4e164edeac2a Mon Sep 17 00:00:00 2001 From: Colin Alworth Date: Wed, 17 Dec 2025 13:45:46 -0600 Subject: [PATCH] Add Promise.allSettled and AllSettledResultElement Fixes #182 --- .../promise/AllSettledResultElement.java | 20 +++++++++++++++++++ java/elemental2/promise/Promise.java | 10 ++++++++++ java/elemental2/promise/promise.types | 3 ++- 3 files changed, 32 insertions(+), 1 deletion(-) create mode 100644 java/elemental2/promise/AllSettledResultElement.java diff --git a/java/elemental2/promise/AllSettledResultElement.java b/java/elemental2/promise/AllSettledResultElement.java new file mode 100644 index 0000000..ac63197 --- /dev/null +++ b/java/elemental2/promise/AllSettledResultElement.java @@ -0,0 +1,20 @@ +package elemental2.promise; + +import jsinterop.annotations.JsProperty; +import jsinterop.annotations.JsType; + +/** + * Represents an element of the array returned by Promise.allSettled(). + * @param the type of the succeeded promise. + */ +@JsType(isNative = true) +public interface AllSettledResultElement { + @JsProperty + String getStatus(); + + @JsProperty + VALUE getValue(); + + @JsProperty + Object getReason(); +} diff --git a/java/elemental2/promise/Promise.java b/java/elemental2/promise/Promise.java index a383d10..b22ecad 100644 --- a/java/elemental2/promise/Promise.java +++ b/java/elemental2/promise/Promise.java @@ -124,6 +124,16 @@ public interface ResolveValueUnionType { private static native Promise raceInternal( IThenable[] promises); + @JsOverlay + public static Promise[]> allSettled( + IThenable... promises) { + return allSettledInternal(promises); + } + + @JsMethod(name = "allSettled") + private static native Promise[]> allSettledInternal( + IThenable[] promises); + public static native Promise reject(@Nullable Object error); @JsOverlay diff --git a/java/elemental2/promise/promise.types b/java/elemental2/promise/promise.types index 04ef08e..d6b0c9d 100644 --- a/java/elemental2/promise/promise.types +++ b/java/elemental2/promise/promise.types @@ -1,2 +1,3 @@ IThenable=elemental2.promise.IThenable -Promise=elemental2.promise.Promise \ No newline at end of file +Promise=elemental2.promise.Promise +AllSettledResultElement=elemental2.promise.AllSettledResultElement \ No newline at end of file