diff --git a/example/src/getTests.ts b/example/src/getTests.ts index 4e4f429e1..ed5baa811 100644 --- a/example/src/getTests.ts +++ b/example/src/getTests.ts @@ -664,10 +664,10 @@ export function getTests( ( await it(async () => { const start = performance.now() - // 2s + 2s = ~4s in serial, ~2s in parallel - await Promise.all([testObject.wait(2), testObject.wait(2)]) + // 0.5s + 0.5s = ~1s in serial, ~0.5s in parallel + await Promise.all([testObject.wait(0.5), testObject.wait(0.5)]) const end = performance.now() - const didRunInParallel = end - start < 4000 + const didRunInParallel = end - start < 1000 return didRunInParallel }) ) diff --git a/packages/react-native-nitro-modules/cpp/core/Promise.hpp b/packages/react-native-nitro-modules/cpp/core/Promise.hpp index d6494a212..29d95fb63 100644 --- a/packages/react-native-nitro-modules/cpp/core/Promise.hpp +++ b/packages/react-native-nitro-modules/cpp/core/Promise.hpp @@ -62,11 +62,8 @@ class Promise final { * Once the future resolves or rejects, the Promise resolves or rejects. */ static std::shared_ptr awaitFuture(std::future&& future) { - std::shared_future sharedFuture(std::move(future)); - return async([sharedFuture = std::move(sharedFuture)]() { - sharedFuture.wait(); - return sharedFuture.get(); - }); + auto sharedFuture = std::make_shared>(std::move(future)); + return async([sharedFuture = std::move(sharedFuture)]() { return sharedFuture->get(); }); } /** @@ -230,11 +227,8 @@ class Promise final { } static std::shared_ptr awaitFuture(std::future&& future) { - std::shared_future sharedFuture(std::move(future)); - return async([sharedFuture = std::move(sharedFuture)]() { - sharedFuture.wait(); - sharedFuture.get(); - }); + auto sharedFuture = std::make_shared>(std::move(future)); + return async([sharedFuture = std::move(sharedFuture)]() { sharedFuture->get(); }); } static std::shared_ptr resolved() {