File tree 1 file changed +46
-0
lines changed
1 file changed +46
-0
lines changed Original file line number Diff line number Diff line change
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
+ } ) ( ) ;
You can’t perform that action at this time.
0 commit comments