__ __ __ __ _____ _ _ _____ _ _ _ | \/ | \ \ / / | __ \ (_) | | / ____| | | | | | \ / |_ __\ V / | |__) | __ ___ ____ _| |_ ___ | (___ | |__ ___| | | | |\/| | '__|> < | ___/ '__| \ \ / / _` | __/ _ \ \___ \| '_ \ / _ \ | | | | | | |_ / . \ | | | | | |\ V / (_| | || __/ ____) | | | | __/ | | |_| |_|_(_)_/ \_\ |_| |_| |_| \_/ \__,_|\__\___| |_____/|_| |_|\___V 2.1 if you need WebShell for Seo everyday contact me on Telegram Telegram Address : @jackleetFor_More_Tools:
"use strict";
module.exports = function(Promise,
PromiseArray,
apiRejection,
tryConvertToPromise,
INTERNAL,
debug) {
var getDomain = Promise._getDomain;
var util = require("./util");
var tryCatch = util.tryCatch;
var errorObj = util.errorObj;
var async = Promise._async;
function MappingPromiseArray(promises, fn, limit, _filter) {
this.constructor$(promises);
this._promise._captureStackTrace();
var domain = getDomain();
this._callback = domain === null ? fn : util.domainBind(domain, fn);
this._preservedValues = _filter === INTERNAL
? new Array(this.length())
: null;
this._limit = limit;
this._inFlight = 0;
this._queue = [];
async.invoke(this._asyncInit, this, undefined);
}
util.inherits(MappingPromiseArray, PromiseArray);
MappingPromiseArray.prototype._asyncInit = function() {
this._init$(undefined, -2);
};
MappingPromiseArray.prototype._init = function () {};
MappingPromiseArray.prototype._promiseFulfilled = function (value, index) {
var values = this._values;
var length = this.length();
var preservedValues = this._preservedValues;
var limit = this._limit;
if (index < 0) {
index = (index * -1) - 1;
values[index] = value;
if (limit >= 1) {
this._inFlight--;
this._drainQueue();
if (this._isResolved()) return true;
}
} else {
if (limit >= 1 && this._inFlight >= limit) {
values[index] = value;
this._queue.push(index);
return false;
}
if (preservedValues !== null) preservedValues[index] = value;
var promise = this._promise;
var callback = this._callback;
var receiver = promise._boundValue();
promise._pushContext();
var ret = tryCatch(callback).call(receiver, value, index, length);
var promiseCreated = promise._popContext();
debug.checkForgottenReturns(
ret,
promiseCreated,
preservedValues !== null ? "Promise.filter" : "Promise.map",
promise
);
if (ret === errorObj) {
this._reject(ret.e);
return true;
}
var maybePromise = tryConvertToPromise(ret, this._promise);
if (maybePromise instanceof Promise) {
maybePromise = maybePromise._target();
var bitField = maybePromise._bitField;
;
if (((bitField & 50397184) === 0)) {
if (limit >= 1) this._inFlight++;
values[index] = maybePromise;
maybePromise._proxy(this, (index + 1) * -1);
return false;
} else if (((bitField & 33554432) !== 0)) {
ret = maybePromise._value();
} else if (((bitField & 16777216) !== 0)) {
this._reject(maybePromise._reason());
return true;
} else {
this._cancel();
return true;
}
}
values[index] = ret;
}
var totalResolved = ++this._totalResolved;
if (totalResolved >= length) {
if (preservedValues !== null) {
this._filter(values, preservedValues);
} else {
this._resolve(values);
}
return true;
}
return false;
};
MappingPromiseArray.prototype._drainQueue = function () {
var queue = this._queue;
var limit = this._limit;
var values = this._values;
while (queue.length > 0 && this._inFlight < limit) {
if (this._isResolved()) return;
var index = queue.pop();
this._promiseFulfilled(values[index], index);
}
};
MappingPromiseArray.prototype._filter = function (booleans, values) {
var len = values.length;
var ret = new Array(len);
var j = 0;
for (var i = 0; i < len; ++i) {
if (booleans[i]) ret[j++] = values[i];
}
ret.length = j;
this._resolve(ret);
};
MappingPromiseArray.prototype.preservedValues = function () {
return this._preservedValues;
};
function map(promises, fn, options, _filter) {
if (typeof fn !== "function") {
return apiRejection("expecting a function but got " + util.classString(fn));
}
var limit = 0;
if (options !== undefined) {
if (typeof options === "object" && options !== null) {
if (typeof options.concurrency !== "number") {
return Promise.reject(
new TypeError("'concurrency' must be a number but it is " +
util.classString(options.concurrency)));
}
limit = options.concurrency;
} else {
return Promise.reject(new TypeError(
"options argument must be an object but it is " +
util.classString(options)));
}
}
limit = typeof limit === "number" &&
isFinite(limit) && limit >= 1 ? limit : 0;
return new MappingPromiseArray(promises, fn, limit, _filter).promise();
}
Promise.prototype.map = function (fn, options) {
return map(this, fn, options, null);
};
Promise.map = function (promises, fn, options, _filter) {
return map(promises, fn, options, _filter);
};
};
| Name | Type | Size | Permission | Actions |
|---|---|---|---|---|
| any.js | File | 421 B | 0644 |
|
| assert.js | File | 1.61 KB | 0644 |
|
| async.js | File | 4.05 KB | 0644 |
|
| bind.js | File | 1.92 KB | 0644 |
|
| bluebird.js | File | 291 B | 0644 |
|
| call_get.js | File | 4.25 KB | 0644 |
|
| cancel.js | File | 3.62 KB | 0644 |
|
| catch_filter.js | File | 1.39 KB | 0644 |
|
| context.js | File | 2.33 KB | 0644 |
|
| debuggability.js | File | 29.63 KB | 0644 |
|
| direct_resolve.js | File | 1.36 KB | 0644 |
|
| each.js | File | 789 B | 0644 |
|
| errors.js | File | 3.63 KB | 0644 |
|
| es5.js | File | 1.93 KB | 0644 |
|
| filter.js | File | 314 B | 0644 |
|
| finally.js | File | 4.5 KB | 0644 |
|
| generators.js | File | 7.58 KB | 0644 |
|
| join.js | File | 8.03 KB | 0644 |
|
| map.js | File | 5.25 KB | 0644 |
|
| method.js | File | 1.73 KB | 0644 |
|
| nodeback.js | File | 1.52 KB | 0644 |
|
| nodeify.js | File | 1.61 KB | 0644 |
|
| promise.js | File | 25.59 KB | 0644 |
|
| promise_array.js | File | 5.08 KB | 0644 |
|
| promisify.js | File | 11.9 KB | 0644 |
|
| props.js | File | 3.04 KB | 0644 |
|
| queue.js | File | 1.83 KB | 0644 |
|
| race.js | File | 1.22 KB | 0644 |
|
| reduce.js | File | 5.01 KB | 0644 |
|
| schedule.js | File | 2.1 KB | 0644 |
|
| settle.js | File | 1.23 KB | 0644 |
|
| some.js | File | 3.87 KB | 0644 |
|
| synchronous_inspection.js | File | 2.75 KB | 0644 |
|
| thenables.js | File | 2.08 KB | 0644 |
|
| timers.js | File | 2.34 KB | 0644 |
|
| using.js | File | 7.35 KB | 0644 |
|
| util.js | File | 10.28 KB | 0644 |
|