OLD | NEW |
| (Empty) |
1 Promise.all = Promise.all || function () { | |
2 var args = Array.prototype.slice.call(arguments.length === 1 && Array.isArray(
arguments[0]) ? arguments[0] : arguments); | |
3 | |
4 return new Promise(function (resolve, reject) { | |
5 if (args.length === 0) return resolve([]); | |
6 var remaining = args.length; | |
7 function res(i, val) { | |
8 try { | |
9 if (val && (typeof val === 'object' || typeof val === 'function')) { | |
10 var then = val.then; | |
11 if (typeof then === 'function') { | |
12 then.call(val, function (val) { res(i, val) }, reject); | |
13 return; | |
14 } | |
15 } | |
16 args[i] = val; | |
17 if (--remaining === 0) { | |
18 resolve(args); | |
19 } | |
20 } catch (ex) { | |
21 reject(ex); | |
22 } | |
23 } | |
24 for (var i = 0; i < args.length; i++) { | |
25 res(i, args[i]); | |
26 } | |
27 }); | |
28 }; | |
29 | |
30 Promise.race = Promise.race || function (values) { | |
31 return new Promise(function (resolve, reject) { | |
32 for(var i = 0, len = values.length; i < len; i++) { | |
33 values[i].then(resolve, reject); | |
34 } | |
35 }); | |
36 }; | |
37 | |
OLD | NEW |