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 |