Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(959)

Unified Diff: third_party/polymer/components/promise-polyfill/Promise-Statics.js

Issue 2906483004: [pinpoint] Add iron-form and paper-checkbox to polymer components. (Closed)
Patch Set: Created 3 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: third_party/polymer/components/promise-polyfill/Promise-Statics.js
diff --git a/third_party/polymer/components/promise-polyfill/Promise-Statics.js b/third_party/polymer/components/promise-polyfill/Promise-Statics.js
new file mode 100644
index 0000000000000000000000000000000000000000..49eeb8b3444ccfac876f527ab2a323c6014657fa
--- /dev/null
+++ b/third_party/polymer/components/promise-polyfill/Promise-Statics.js
@@ -0,0 +1,49 @@
+/**
+@license
+Copyright (c) 2016 The Polymer Project Authors. All rights reserved.
+This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt
+The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt
+The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt
+Code distributed by Google as part of the polymer project is also
+subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt
+*/
+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) {
+ // TODO(bradfordcsmith): To be consistent with the ECMAScript spec, this
+ // method should take any iterable, not just an array.
+ var forcedArray = /** @type {!Array<!Thenable>} */ (values);
+ return new Promise(function (resolve, reject) {
+ for(var i = 0, len = forcedArray.length; i < len; i++) {
+ forcedArray[i].then(resolve, reject);
+ }
+ });
+};
+

Powered by Google App Engine
This is Rietveld 408576698