UNPKG

609 BJavaScriptView Raw
1import {
2 invokeCallback,
3 subscribe,
4 FULFILLED,
5 REJECTED,
6 noop,
7 makePromise,
8 PROMISE_ID
9} from './-internal';
10
11import { asap } from './asap';
12
13export default function then(onFulfillment, onRejection) {
14 const parent = this;
15
16 const child = new this.constructor(noop);
17
18 if (child[PROMISE_ID] === undefined) {
19 makePromise(child);
20 }
21
22 const { _state } = parent;
23
24 if (_state) {
25 const callback = arguments[_state - 1];
26 asap(() => invokeCallback(_state, child, callback, parent._result));
27 } else {
28 subscribe(parent, child, onFulfillment, onRejection);
29 }
30
31 return child;
32}