Simplifying Promise Resolution with Promise.withResolvers()
ECMAScript 2024 introduced a powerful new feature: the static method Promise.withResolvers(). This method returns an object containing a…
Simplifying Promise Resolution with Promise.withResolvers()

ECMAScript 2024 introduced a powerful new feature: the static method Promise.withResolvers(). This method returns an object containing a promise, along with two functions—resolve and reject—making it easier and cleaner to manually control the resolution of a promise.
The Problem It Solves
Traditionally, if you wanted to resolve or reject a promise outside its executor function, you’d have to do something like this:
let resolve, reject;
const promise = new Promise((res, rej) => {
resolve = res;
reject = rej;
});
setTimeout(() => resolve(console.log("SK@")), 1000);
Here, you declare resolve and reject outside the promise and assign them inside the executor. While this works, it feels a bit clunky and error-prone.
The Modern Approach with Promise.withResolvers()
With Promise.withResolvers(), the same logic becomes much more elegant:
const { promise, resolve, reject } = Promise.withResolvers();
setTimeout(() => {
resolve("I am resolving after 1000 ms");
}, 1000);
// Consuming the promise
promise.then((result) => console.log("SK@", result));
This approach enhances readability, reduces boilerplate code, and avoids potential issues associated with manual handling.
Key Points to Remember
Promise.withResolvers()is a recent addition in ECMAScript 2024.- Ensure that you use polyfills if you’re targeting environments that do not yet support this feature.
- On the backend, make sure you’re running Node.js version 22.x.x or higher to take advantage of this method.
Conclusion
While you can achieve the same results with traditional promise patterns, Promise.withResolvers() makes your code cleaner, more readable, and less error-prone. It's a small addition with a big impact on how we manage asynchronous behavior in JavaScript.
Make sure to explore and integrate it in your projects where appropriate!
메타데이터
- post_id
- bf897d36fbcb
- slug
- simplifying-promise-resolution-with-promise-withresolvers-bf897d36fbcb
- url
- https://medium.com/@sauravkumarsharma/simplifying-promise-resolution-with-promise-withresolvers-bf897d36fbcb
- canonical_url
- https://medium.com/@sauravkumarsharma/simplifying-promise-resolution-with-promise-withresolvers-bf897d36fbcb
- author_url
- https://medium.com/@sauravkumarsharma
- status
- ok
- fetched_at
- 2026-08-10 20:08:54