Index: third_party/polymer/v0_8/components-chromium/promise-polyfill/Promise-Statics.js |
diff --git a/third_party/polymer/v0_8/components-chromium/promise-polyfill/Promise-Statics.js b/third_party/polymer/v0_8/components-chromium/promise-polyfill/Promise-Statics.js |
new file mode 100644 |
index 0000000000000000000000000000000000000000..7ce402ebd059049a0c438b49cc4a8c2b518a9ede |
--- /dev/null |
+++ b/third_party/polymer/v0_8/components-chromium/promise-polyfill/Promise-Statics.js |
@@ -0,0 +1,37 @@ |
+Promise.all = Promise.all || function () { |
+ var args = Array.prototype.slice.call(arguments.length === 1 && Array.isArray(arguments[0]) ? arguments[0] : arguments); |
+ |
+ return new Promise(function (resolve, reject) { |
+ if (args.length === 0) return resolve([]); |
+ var remaining = args.length; |
+ function res(i, val) { |
+ try { |
+ if (val && (typeof val === 'object' || typeof val === 'function')) { |
+ var then = val.then; |
+ if (typeof then === 'function') { |
+ then.call(val, function (val) { res(i, val) }, reject); |
+ return; |
+ } |
+ } |
+ args[i] = val; |
+ if (--remaining === 0) { |
+ resolve(args); |
+ } |
+ } catch (ex) { |
+ reject(ex); |
+ } |
+ } |
+ for (var i = 0; i < args.length; i++) { |
+ res(i, args[i]); |
+ } |
+ }); |
+}; |
+ |
+Promise.race = Promise.race || function (values) { |
+ return new Promise(function (resolve, reject) { |
+ for(var i = 0, len = values.length; i < len; i++) { |
+ values[i].then(resolve, reject); |
+ } |
+ }); |
+}; |
+ |