@@ -10,8 +10,8 @@ import {extend, assertPredicate, forEach, applyPairs} from "./common/common";
1010
1111/** $q-like promise api */
1212services . $q = ( executor : ( resolve , reject ) => void ) => new Promise ( executor ) ;
13- services . $q . when = ( val ) => new Promise ( ( resolve , reject ) => resolve ( val ) ) ;
14- services . $q . reject = ( val ) => new Promise ( ( resolve , reject ) => { reject ( val ) ; } ) ;
13+ services . $q . when = ( val ) => Promise . resolve ( val ) ;
14+ services . $q . reject = ( val ) => Promise . reject ( val ) ;
1515services . $q . defer = function ( ) {
1616 let deferred : any = { } ;
1717 deferred . promise = new Promise ( ( resolve , reject ) => {
@@ -24,11 +24,7 @@ services.$q.defer = function() {
2424
2525services . $q . all = function ( promises : { [ key : string ] : Promise < any > } | Promise < any > [ ] ) {
2626 if ( isArray ( promises ) ) {
27- return new Promise ( ( resolve , reject ) => {
28- let results = [ ] ;
29- promises . reduce ( ( wait4 , promise ) => wait4 . then ( ( ) => promise . then ( val => results . push ( val ) ) ) , services . $q . when ( ) )
30- . then ( ( ) => { resolve ( results ) ; } , reject ) ;
31- } ) ;
27+ return Promise . all ( promises ) ;
3228 }
3329
3430 if ( isObject ( promises ) ) {
@@ -38,6 +34,7 @@ services.$q.all = function (promises: { [key: string]: Promise<any> } | Promise<
3834 // When each promise resolves, map it to a tuple { key: key, val: val }
3935 let chain = Object . keys ( promises )
4036 . map ( key => promises [ key ] . then ( val => ( { key, val} ) ) ) ;
37+
4138 // Then wait for all promises to resolve, and convert them back to an object
4239 return services . $q . all ( chain ) . then ( values => {
4340 let value = values . reduce ( ( acc , tuple ) => { acc [ tuple . key ] = tuple . val ; return acc ; } , { } ) ;
0 commit comments