import Enumerator from './enumerator';
import {
PENDING,
FULFILLED,
fulfill
} from './-internal';
const hasOwnProperty = Object.prototype.hasOwnProperty;
export default class PromiseHash extends Enumerator {
constructor(Constructor, object, abortOnReject = true, label) {
super(Constructor, object, abortOnReject, label);
}
_init(Constructor, object) {
this._result = {};
this._enumerate(object);
if (this._remaining === 0) {
fulfill(this.promise, this._result);
}
}
_enumerate(input) {
let promise = this.promise;
let results = [];
for (let key in input) {
if (hasOwnProperty.call(input, key)) {
results.push({
position: key,
entry: input[key]
});
}
}
let length = results.length;
this._remaining = length;
let result;
for (let i = 0; promise._state === PENDING && i < length; i++) {
result = results[i];
this._eachEntry(result.entry, result.position);
}
}
}