react / wstein / node_modules / jest-cli / node_modules / jsdom / node_modules / request / node_modules / har-validator / node_modules / bluebird / js / main / bind.js
81160 views"use strict";1module.exports = function(Promise, INTERNAL, tryConvertToPromise) {2var rejectThis = function(_, e) {3this._reject(e);4};56var targetRejected = function(e, context) {7context.promiseRejectionQueued = true;8context.bindingPromise._then(rejectThis, rejectThis, null, this, e);9};1011var bindingResolved = function(thisArg, context) {12this._setBoundTo(thisArg);13if (this._isPending()) {14this._resolveCallback(context.target);15}16};1718var bindingRejected = function(e, context) {19if (!context.promiseRejectionQueued) this._reject(e);20};2122Promise.prototype.bind = function (thisArg) {23var maybePromise = tryConvertToPromise(thisArg);24var ret = new Promise(INTERNAL);25ret._propagateFrom(this, 1);26var target = this._target();27if (maybePromise instanceof Promise) {28var context = {29promiseRejectionQueued: false,30promise: ret,31target: target,32bindingPromise: maybePromise33};34target._then(INTERNAL, targetRejected, ret._progress, ret, context);35maybePromise._then(36bindingResolved, bindingRejected, ret._progress, ret, context);37} else {38ret._setBoundTo(thisArg);39ret._resolveCallback(target);40}41return ret;42};4344Promise.prototype._setBoundTo = function (obj) {45if (obj !== undefined) {46this._bitField = this._bitField | 131072;47this._boundTo = obj;48} else {49this._bitField = this._bitField & (~131072);50}51};5253Promise.prototype._isBound = function () {54return (this._bitField & 131072) === 131072;55};5657Promise.bind = function (thisArg, value) {58var maybePromise = tryConvertToPromise(thisArg);59var ret = new Promise(INTERNAL);6061if (maybePromise instanceof Promise) {62maybePromise._then(function(thisArg) {63ret._setBoundTo(thisArg);64ret._resolveCallback(value);65}, ret._reject, ret._progress, ret, null);66} else {67ret._setBoundTo(thisArg);68ret._resolveCallback(value);69}70return ret;71};72};737475