Version 1
[yaffs-website] / node_modules / es6-promise / lib / es6-promise / then.js
diff --git a/node_modules/es6-promise/lib/es6-promise/then.js b/node_modules/es6-promise/lib/es6-promise/then.js
new file mode 100644 (file)
index 0000000..b2b79f0
--- /dev/null
@@ -0,0 +1,32 @@
+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;
+}