File tree Expand file tree Collapse file tree 1 file changed +46
-0
lines changed Expand file tree Collapse file tree 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