| 123456789101112131415161718192021222324252627282930313233 |
- import {
- invokeCallback,
- subscribe,
- FULFILLED,
- REJECTED,
- noop,
- makePromise,
- PROMISE_ID
- } from './-internal';
- import { asap } from './asap';
- export default function then(onFulfillment, onRejection) {
- const parent = this;
- const child = new this.constructor(noop);
- if (child[PROMISE_ID] === undefined) {
- makePromise(child);
- }
- const { _state } = parent;
- if (_state) {
- const callback = arguments[_state - 1];
- asap(() => invokeCallback(_state, child, callback, parent._result));
- } else {
- subscribe(parent, child, onFulfillment, onRejection);
- }
- return child;
- }
|