react / wstein / node_modules / jest-cli / node_modules / jsdom / node_modules / request / node_modules / har-validator / node_modules / bluebird / js / main / progress.js
81160 views"use strict";1module.exports = function(Promise, PromiseArray) {2var util = require("./util.js");3var async = require("./async.js");4var tryCatch = util.tryCatch;5var errorObj = util.errorObj;67Promise.prototype.progressed = function (handler) {8return this._then(undefined, undefined, handler, undefined, undefined);9};1011Promise.prototype._progress = function (progressValue) {12if (this._isFollowingOrFulfilledOrRejected()) return;13this._target()._progressUnchecked(progressValue);1415};1617Promise.prototype._progressHandlerAt = function (index) {18return index === 019? this._progressHandler020: this[(index << 2) + index - 5 + 2];21};2223Promise.prototype._doProgressWith = function (progression) {24var progressValue = progression.value;25var handler = progression.handler;26var promise = progression.promise;27var receiver = progression.receiver;2829var ret = tryCatch(handler).call(receiver, progressValue);30if (ret === errorObj) {31if (ret.e != null &&32ret.e.name !== "StopProgressPropagation") {33var trace = util.canAttachTrace(ret.e)34? ret.e : new Error(util.toString(ret.e));35promise._attachExtraTrace(trace);36promise._progress(ret.e);37}38} else if (ret instanceof Promise) {39ret._then(promise._progress, null, null, promise, undefined);40} else {41promise._progress(ret);42}43};444546Promise.prototype._progressUnchecked = function (progressValue) {47var len = this._length();48var progress = this._progress;49for (var i = 0; i < len; i++) {50var handler = this._progressHandlerAt(i);51var promise = this._promiseAt(i);52if (!(promise instanceof Promise)) {53var receiver = this._receiverAt(i);54if (typeof handler === "function") {55handler.call(receiver, progressValue, promise);56} else if (receiver instanceof PromiseArray &&57!receiver._isResolved()) {58receiver._promiseProgressed(progressValue, promise);59}60continue;61}6263if (typeof handler === "function") {64async.invoke(this._doProgressWith, this, {65handler: handler,66promise: promise,67receiver: this._receiverAt(i),68value: progressValue69});70} else {71async.invoke(progress, promise, progressValue);72}73}74};75};767778