Skip to content

Commit b5b5a12

Browse files
committed
Add Promise.withResolvers example
1 parent b3a56f7 commit b5b5a12

File tree

1 file changed

+46
-0
lines changed

1 file changed

+46
-0
lines changed

JavaScript/d-resolvers.js

+46
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
'use strict';
2+
3+
// Need node.js 22
4+
5+
const sumAsync = (a, b, callback) => {
6+
if (typeof a !== 'number') return;
7+
if (typeof b !== 'number') return;
8+
setImmediate(() => {
9+
callback(a + b);
10+
});
11+
};
12+
13+
// Old approach
14+
15+
(async () => {
16+
let resolve, reject;
17+
const promise = new Promise((resolved, rejected) => {
18+
resolve = resolved;
19+
reject = rejected;
20+
});
21+
setTimeout(reject, 1000, new Error('Timed out'));
22+
sumAsync(2, 3, resolve);
23+
const result = await promise;
24+
console.log({ result });
25+
})();
26+
27+
// Alternative approach
28+
29+
(async () => {
30+
const promise = new Promise((resolve, reject) => {
31+
sumAsync(4, 5, resolve);
32+
setTimeout(reject, 1000, new Error('Timed out'));
33+
});
34+
const result = await promise;
35+
console.log({ result });
36+
})();
37+
38+
// New approach
39+
40+
(async () => {
41+
const { promise, resolve, reject } = Promise.withResolvers();
42+
setTimeout(reject, 1000, new Error('Timed out'));
43+
sumAsync(6, 7, resolve);
44+
const result = await promise;
45+
console.log({ result });
46+
})();

0 commit comments

Comments
 (0)