@@ -10,8 +10,8 @@ import {extend, assertPredicate, forEach, applyPairs} from "./common/common";
10
10
11
11
/** $q-like promise api */
12
12
services . $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 ) ;
15
15
services . $q . defer = function ( ) {
16
16
let deferred : any = { } ;
17
17
deferred . promise = new Promise ( ( resolve , reject ) => {
@@ -24,11 +24,7 @@ services.$q.defer = function() {
24
24
25
25
services . $q . all = function ( promises : { [ key : string ] : Promise < any > } | Promise < any > [ ] ) {
26
26
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 ) ;
32
28
}
33
29
34
30
if ( isObject ( promises ) ) {
@@ -38,6 +34,7 @@ services.$q.all = function (promises: { [key: string]: Promise<any> } | Promise<
38
34
// When each promise resolves, map it to a tuple { key: key, val: val }
39
35
let chain = Object . keys ( promises )
40
36
. map ( key => promises [ key ] . then ( val => ( { key, val} ) ) ) ;
37
+
41
38
// Then wait for all promises to resolve, and convert them back to an object
42
39
return services . $q . all ( chain ) . then ( values => {
43
40
let value = values . reduce ( ( acc , tuple ) => { acc [ tuple . key ] = tuple . val ; return acc ; } , { } ) ;
0 commit comments