@@ -66,17 +66,58 @@ class MyPromise {
6666 this . finallyCb = cb ;
6767 }
6868 }
69+
70+ static all ( promises ) {
71+ return new MyPromise ( ( resolve , reject ) => {
72+ if ( ! Array . isArray ( promises ) ) {
73+ return new TypeError ( "Promises type should be array" ) ;
74+ }
75+
76+ let result = [ ] ;
77+ let completedResponse = 0 ;
78+
79+ if ( promises . length === 0 ) {
80+ resolve ( result ) ;
81+ }
82+
83+ promises . forEach ( ( promise , index ) => {
84+ promise
85+ . then ( ( res ) => {
86+ result . push ( res ) ;
87+ completedResponse ++ ;
88+ if ( completedResponse === promises . length ) {
89+ resolve ( result ) ;
90+ }
91+ } )
92+ . catch ( ( err ) => {
93+ reject ( err ) ;
94+ } ) ;
95+ } ) ;
96+ } ) ;
97+ }
6998}
7099
71100const myPromise = new MyPromise ( ( resolve , reject ) => {
72- setTimeout ( ( ) => reject ( "Hello, World!" ) , 1000 ) ;
101+ setTimeout ( ( ) => resolve ( "Hello, World!" ) , 1000 ) ;
73102} ) ;
74103
75- myPromise
76- . then ( ( data ) => {
77- console . log ( "On Then First : " , data ) ;
78- return "Hey" ;
104+ // myPromise
105+ // .then((data) => {
106+ // console.log("On Then First : ", data);
107+ // return "Hey";
108+ // })
109+ // // .then((secdata) => console.log("On Then Second : ",secdata))
110+ // .catch((data) => console.log("On Catch : ", data))
111+ // .finally(() => console.log("finally..."));
112+
113+ const promise1 = Promise . resolve ( 10 ) ;
114+ const promise2 = Promise . resolve ( 20 ) ;
115+ const promise3 = Promise . resolve ( 30 ) ;
116+
117+ MyPromise . all ( [ myPromise , promise1 , promise2 , promise3 ] )
118+ . then ( ( results ) => {
119+ console . log ( results ) ; // [10, 20, 30]
79120 } )
80- // .then((secdata ) => console.log("On Then Second : ",secdata))
81- . catch ( ( data ) => console . log ( "On Catch : " , data ) )
82- . finally ( ( ) => console . log ( "finally..." ) ) ;
121+ . catch ( ( err ) => {
122+ console . error ( err ) ;
123+ } ) ;
0 commit comments