You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
34 lines
738 B
34 lines
738 B
import Enumerator from './enumerator'; |
|
import { |
|
PENDING, |
|
FULFILLED, |
|
fulfill |
|
} from './-internal'; |
|
|
|
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); |
|
} |
|
|
|
_enumerate(input) { |
|
let keys = Object.keys(input); |
|
|
|
let length = keys.length; |
|
let promise = this.promise; |
|
this._remaining = length; |
|
|
|
let key, val; |
|
for (let i = 0; promise._state === PENDING && i < length; i++) { |
|
key = keys[i]; |
|
val = input[key]; |
|
this._eachEntry(val, key, true); |
|
} |
|
|
|
this._checkFullfillment(); |
|
} |
|
}
|
|
|