promise-hash.js 738 B

12345678910111213141516171819202122232425262728293031323334
  1. import Enumerator from './enumerator';
  2. import {
  3. PENDING,
  4. FULFILLED,
  5. fulfill
  6. } from './-internal';
  7. export default class PromiseHash extends Enumerator {
  8. constructor(Constructor, object, abortOnReject = true, label) {
  9. super(Constructor, object, abortOnReject, label);
  10. }
  11. _init(Constructor, object) {
  12. this._result = {};
  13. this._enumerate(object);
  14. }
  15. _enumerate(input) {
  16. let keys = Object.keys(input);
  17. let length = keys.length;
  18. let promise = this.promise;
  19. this._remaining = length;
  20. let key, val;
  21. for (let i = 0; promise._state === PENDING && i < length; i++) {
  22. key = keys[i];
  23. val = input[key];
  24. this._eachEntry(val, key, true);
  25. }
  26. this._checkFullfillment();
  27. }
  28. }