1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525 |
- (function (definition) {
-
-
-
-
-
-
-
- if (typeof bootstrap === "function") {
- bootstrap("promise", definition);
-
- } else if (typeof exports === "object") {
- module.exports = definition();
-
- } else if (typeof define === "function" && define.amd) {
- define(definition);
-
- } else if (typeof ses !== "undefined") {
- if (!ses.ok()) {
- return;
- } else {
- ses.makeQ = definition;
- }
-
- } else {
- Q = definition();
- }
- })(function () {
- "use strict";
- var qStartingLine = captureLine();
- var qFileName;
- var noop = function () {};
- var nextTick;
- if (typeof setImmediate === "function") {
-
- if (typeof window !== "undefined") {
- nextTick = setImmediate.bind(window);
- } else {
- nextTick = setImmediate;
- }
- } else if (typeof process !== "undefined" && process.nextTick) {
-
-
- nextTick = process.nextTick;
- } else {
- (function () {
-
- var head = {task: void 0, next: null};
- var tail = head;
- var maxPendingTicks = 2;
- var pendingTicks = 0;
- var queuedTasks = 0;
- var usedTicks = 0;
- var requestTick = void 0;
- function onTick() {
-
-
- --pendingTicks;
- if (++usedTicks >= maxPendingTicks) {
-
- usedTicks = 0;
- maxPendingTicks *= 4;
- var expectedTicks = queuedTasks && Math.min(
- queuedTasks - 1,
- maxPendingTicks
- );
- while (pendingTicks < expectedTicks) {
- ++pendingTicks;
- requestTick();
- }
- }
- while (queuedTasks) {
- --queuedTasks;
- head = head.next;
- var task = head.task;
- head.task = void 0;
- task();
- }
- usedTicks = 0;
- }
- nextTick = function (task) {
- tail = tail.next = {task: task, next: null};
- if (
- pendingTicks < ++queuedTasks &&
- pendingTicks < maxPendingTicks
- ) {
- ++pendingTicks;
- requestTick();
- }
- };
- if (typeof MessageChannel !== "undefined") {
-
-
- var channel = new MessageChannel();
- channel.port1.onmessage = onTick;
- requestTick = function () {
- channel.port2.postMessage(0);
- };
- } else {
-
- requestTick = function () {
- setTimeout(onTick, 0);
- };
- }
- })();
- }
- function uncurryThis(f) {
- var call = Function.call;
- return function () {
- return call.apply(f, arguments);
- };
- }
- var array_slice = uncurryThis(Array.prototype.slice);
- var array_reduce = uncurryThis(
- Array.prototype.reduce || function (callback, basis) {
- var index = 0,
- length = this.length;
-
- if (arguments.length === 1) {
-
-
- do {
- if (index in this) {
- basis = this[index++];
- break;
- }
- if (++index >= length) {
- throw new TypeError();
- }
- } while (1);
- }
-
- for (; index < length; index++) {
-
- if (index in this) {
- basis = callback(basis, this[index], index);
- }
- }
- return basis;
- }
- );
- var array_indexOf = uncurryThis(
- Array.prototype.indexOf || function (value) {
-
- for (var i = 0; i < this.length; i++) {
- if (this[i] === value) {
- return i;
- }
- }
- return -1;
- }
- );
- var array_map = uncurryThis(
- Array.prototype.map || function (callback, thisp) {
- var self = this;
- var collect = [];
- array_reduce(self, function (undefined, value, index) {
- collect.push(callback.call(thisp, value, index, self));
- }, void 0);
- return collect;
- }
- );
- var object_create = Object.create || function (prototype) {
- function Type() { }
- Type.prototype = prototype;
- return new Type();
- };
- var object_hasOwnProperty = uncurryThis(Object.prototype.hasOwnProperty);
- var object_keys = Object.keys || function (object) {
- var keys = [];
- for (var key in object) {
- if (object_hasOwnProperty(object, key)) {
- keys.push(key);
- }
- }
- return keys;
- };
- var object_toString = uncurryThis(Object.prototype.toString);
- function isStopIteration(exception) {
- return (
- object_toString(exception) === "[object StopIteration]" ||
- exception instanceof QReturnValue
- );
- }
- var QReturnValue;
- if (typeof ReturnValue !== "undefined") {
- QReturnValue = ReturnValue;
- } else {
- QReturnValue = function (value) {
- this.value = value;
- };
- }
- Q.longStackJumpLimit = 1;
- var STACK_JUMP_SEPARATOR = "From previous event:";
- function makeStackTraceLong(error, promise) {
-
-
-
- if (promise.stack &&
- typeof error === "object" &&
- error !== null &&
- error.stack &&
- error.stack.indexOf(STACK_JUMP_SEPARATOR) === -1
- ) {
- error.stack = filterStackString(error.stack) +
- "\n" + STACK_JUMP_SEPARATOR + "\n" +
- filterStackString(promise.stack);
- }
- }
- function filterStackString(stackString) {
- var lines = stackString.split("\n");
- var desiredLines = [];
- for (var i = 0; i < lines.length; ++i) {
- var line = lines[i];
- if (!isInternalFrame(line) && !isNodeFrame(line)) {
- desiredLines.push(line);
- }
- }
- return desiredLines.join("\n");
- }
- function isNodeFrame(stackLine) {
- return stackLine.indexOf("(module.js:") !== -1 ||
- stackLine.indexOf("(node.js:") !== -1;
- }
- function isInternalFrame(stackLine) {
- var pieces = /at .+ \((.*):(\d+):\d+\)/.exec(stackLine);
- if (!pieces) {
- return false;
- }
- var fileName = pieces[1];
- var lineNumber = pieces[2];
- return fileName === qFileName &&
- lineNumber >= qStartingLine &&
- lineNumber <= qEndingLine;
- }
- function captureLine() {
- if (Error.captureStackTrace) {
- var fileName, lineNumber;
- var oldPrepareStackTrace = Error.prepareStackTrace;
- Error.prepareStackTrace = function (error, frames) {
- fileName = frames[1].getFileName();
- lineNumber = frames[1].getLineNumber();
- };
-
-
-
- new Error().stack;
- Error.prepareStackTrace = oldPrepareStackTrace;
- qFileName = fileName;
- return lineNumber;
- }
- }
- function Q(value) {
- return resolve(value);
- }
- Q.nextTick = nextTick;
- Q.defer = defer;
- function defer() {
-
-
-
-
-
-
- var pending = [], progressListeners = [], resolvedPromise;
- var deferred = object_create(defer.prototype);
- var promise = object_create(makePromise.prototype);
- promise.promiseDispatch = function (resolve, op, operands) {
- var args = array_slice(arguments);
- if (pending) {
- pending.push(args);
- if (op === "when" && operands[1]) {
- progressListeners.push(operands[1]);
- }
- } else {
- nextTick(function () {
- resolvedPromise.promiseDispatch.apply(resolvedPromise, args);
- });
- }
- };
- promise.valueOf = function () {
- if (pending) {
- return promise;
- }
- var nearer = valueOf(resolvedPromise);
- if (isPromise(nearer)) {
- resolvedPromise = nearer;
- }
- return nearer;
- };
- if (Error.captureStackTrace && Q.longStackJumpLimit > 0) {
- Error.captureStackTrace(promise, defer);
-
-
-
- promise.stack = promise.stack.substring(
- promise.stack.indexOf("\n") + 1
- );
- }
-
-
-
- function become(promise) {
- resolvedPromise = promise;
- array_reduce(pending, function (undefined, pending) {
- nextTick(function () {
- promise.promiseDispatch.apply(promise, pending);
- });
- }, void 0);
- pending = void 0;
- progressListeners = void 0;
- }
- deferred.promise = promise;
- deferred.resolve = function (value) {
- if (resolvedPromise) {
- return;
- }
- become(resolve(value));
- };
- deferred.fulfill = function (value) {
- if (resolvedPromise) {
- return;
- }
- become(fulfill(value));
- };
- deferred.reject = function (reason) {
- if (resolvedPromise) {
- return;
- }
- become(reject(reason));
- };
- deferred.notify = function (progress) {
- if (resolvedPromise) {
- return;
- }
- array_reduce(progressListeners, function (undefined, progressListener) {
- nextTick(function () {
- progressListener(progress);
- });
- }, void 0);
- };
- return deferred;
- }
- defer.prototype.makeNodeResolver = function () {
- var self = this;
- return function (error, value) {
- if (error) {
- self.reject(error);
- } else if (arguments.length > 2) {
- self.resolve(array_slice(arguments, 1));
- } else {
- self.resolve(value);
- }
- };
- };
- Q.promise = promise;
- function promise(resolver) {
- if (typeof resolver !== "function") {
- throw new TypeError("resolver must be a function.");
- }
- var deferred = defer();
- fcall(
- resolver,
- deferred.resolve,
- deferred.reject,
- deferred.notify
- ).fail(deferred.reject);
- return deferred.promise;
- }
- Q.makePromise = makePromise;
- function makePromise(descriptor, fallback, valueOf, exception, isException) {
- if (fallback === void 0) {
- fallback = function (op) {
- return reject(new Error(
- "Promise does not support operation: " + op
- ));
- };
- }
- var promise = object_create(makePromise.prototype);
- promise.promiseDispatch = function (resolve, op, args) {
- var result;
- try {
- if (descriptor[op]) {
- result = descriptor[op].apply(promise, args);
- } else {
- result = fallback.call(promise, op, args);
- }
- } catch (exception) {
- result = reject(exception);
- }
- if (resolve) {
- resolve(result);
- }
- };
- if (valueOf) {
- promise.valueOf = valueOf;
- }
- if (isException) {
- promise.exception = exception;
- }
- return promise;
- }
- makePromise.prototype.then = function (fulfilled, rejected, progressed) {
- return when(this, fulfilled, rejected, progressed);
- };
- makePromise.prototype.thenResolve = function (value) {
- return when(this, function () { return value; });
- };
- makePromise.prototype.thenReject = function (reason) {
- return when(this, function () { throw reason; });
- };
- array_reduce(
- [
- "isFulfilled", "isRejected", "isPending",
- "dispatch",
- "when", "spread",
- "get", "set", "del", "delete",
- "post", "send", "invoke",
- "keys",
- "fapply", "fcall", "fbind",
- "all", "allResolved",
- "timeout", "delay",
- "catch", "finally", "fail", "fin", "progress", "done",
- "nfcall", "nfapply", "nfbind", "denodeify", "nbind",
- "npost", "nsend", "ninvoke",
- "nodeify"
- ],
- function (undefined, name) {
- makePromise.prototype[name] = function () {
- return Q[name].apply(
- Q,
- [this].concat(array_slice(arguments))
- );
- };
- },
- void 0
- );
- makePromise.prototype.toSource = function () {
- return this.toString();
- };
- makePromise.prototype.toString = function () {
- return "[object Promise]";
- };
- Q.nearer = valueOf;
- function valueOf(value) {
- if (isPromise(value)) {
- return value.valueOf();
- }
- return value;
- }
- Q.isPromise = isPromise;
- function isPromise(object) {
- return object && typeof object.promiseDispatch === "function";
- }
- Q.isPromiseAlike = isPromiseAlike;
- function isPromiseAlike(object) {
- return object && typeof object.then === "function";
- }
- Q.isPending = isPending;
- function isPending(object) {
- return !isFulfilled(object) && !isRejected(object);
- }
- Q.isFulfilled = isFulfilled;
- function isFulfilled(object) {
- return !isPromiseAlike(valueOf(object));
- }
- Q.isRejected = isRejected;
- function isRejected(object) {
- object = valueOf(object);
- return isPromise(object) && "exception" in object;
- }
- var unhandledReasons = Q.unhandledReasons = [];
- var unhandledRejections = [];
- var unhandledReasonsDisplayed = false;
- function displayUnhandledReasons() {
- if (
- !unhandledReasonsDisplayed &&
- typeof window !== "undefined" &&
- !window.Touch &&
- window.console
- ) {
- console.warn("[Q] Unhandled rejection reasons (should be empty):",
- unhandledReasons);
- }
- unhandledReasonsDisplayed = true;
- }
- if (typeof process !== "undefined" && process.on) {
- process.on("exit", function () {
- for (var i = 0; i < unhandledReasons.length; i++) {
- var reason = unhandledReasons[i];
- if (reason && typeof reason.stack !== "undefined") {
- console.warn("Unhandled rejection reason:", reason.stack);
- } else {
- console.warn("Unhandled rejection reason (no stack):", reason);
- }
- }
- });
- }
- Q.reject = reject;
- function reject(reason) {
- var rejection = makePromise({
- "when": function (rejected) {
-
- if (rejected) {
- var at = array_indexOf(unhandledRejections, this);
- if (at !== -1) {
- unhandledRejections.splice(at, 1);
- unhandledReasons.splice(at, 1);
- }
- }
- return rejected ? rejected(reason) : this;
- }
- }, function fallback() {
- return reject(reason);
- }, function valueOf() {
- return this;
- }, reason, true);
-
- displayUnhandledReasons();
- unhandledRejections.push(rejection);
- unhandledReasons.push(reason);
- return rejection;
- }
- Q.fulfill = fulfill;
- function fulfill(object) {
- return makePromise({
- "when": function () {
- return object;
- },
- "get": function (name) {
- return object[name];
- },
- "set": function (name, value) {
- object[name] = value;
- },
- "delete": function (name) {
- delete object[name];
- },
- "post": function (name, args) {
-
-
- if (name === null || name === void 0) {
- return object.apply(void 0, args);
- } else {
- return object[name].apply(object, args);
- }
- },
- "apply": function (thisP, args) {
- return object.apply(thisP, args);
- },
- "keys": function () {
- return object_keys(object);
- }
- }, void 0, function valueOf() {
- return object;
- });
- }
- Q.resolve = resolve;
- function resolve(value) {
-
-
-
- if (isPromise(value)) {
- return value;
- }
-
-
-
-
-
-
-
-
- value = valueOf(value);
-
- if (isPromiseAlike(value)) {
- return coerce(value);
- } else {
- return fulfill(value);
- }
- }
- function coerce(promise) {
- var deferred = defer();
- nextTick(function () {
- try {
- promise.then(deferred.resolve, deferred.reject, deferred.notify);
- } catch (exception) {
- deferred.reject(exception);
- }
- });
- return deferred.promise;
- }
- Q.master = master;
- function master(object) {
- return makePromise({
- "isDef": function () {}
- }, function fallback(op, args) {
- return dispatch(object, op, args);
- }, function () {
- return valueOf(object);
- });
- }
- Q.when = when;
- function when(value, fulfilled, rejected, progressed) {
- var deferred = defer();
- var done = false;
-
- function _fulfilled(value) {
- try {
- return typeof fulfilled === "function" ? fulfilled(value) : value;
- } catch (exception) {
- return reject(exception);
- }
- }
- function _rejected(exception) {
- if (typeof rejected === "function") {
- makeStackTraceLong(exception, resolvedValue);
- try {
- return rejected(exception);
- } catch (newException) {
- return reject(newException);
- }
- }
- return reject(exception);
- }
- function _progressed(value) {
- return typeof progressed === "function" ? progressed(value) : value;
- }
- var resolvedValue = resolve(value);
- nextTick(function () {
- resolvedValue.promiseDispatch(function (value) {
- if (done) {
- return;
- }
- done = true;
- deferred.resolve(_fulfilled(value));
- }, "when", [function (exception) {
- if (done) {
- return;
- }
- done = true;
- deferred.resolve(_rejected(exception));
- }]);
- });
-
- resolvedValue.promiseDispatch(void 0, "when", [void 0, function (value) {
- var newValue;
- var threw = false;
- try {
- newValue = _progressed(value);
- } catch (e) {
- threw = true;
- if (Q.onerror) {
- Q.onerror(e);
- } else {
- throw e;
- }
- }
- if (!threw) {
- deferred.notify(newValue);
- }
- }]);
- return deferred.promise;
- }
- Q.spread = spread;
- function spread(promise, fulfilled, rejected) {
- return when(promise, function (valuesOrPromises) {
- return all(valuesOrPromises).then(function (values) {
- return fulfilled.apply(void 0, values);
- }, rejected);
- }, rejected);
- }
- Q.async = async;
- function async(makeGenerator) {
- return function () {
-
-
- function continuer(verb, arg) {
- var result;
- try {
- result = generator[verb](arg);
- } catch (exception) {
- if (isStopIteration(exception)) {
- return exception.value;
- } else {
- return reject(exception);
- }
- }
- return when(result, callback, errback);
- }
- var generator = makeGenerator.apply(this, arguments);
- var callback = continuer.bind(continuer, "send");
- var errback = continuer.bind(continuer, "throw");
- return callback();
- };
- }
- Q["return"] = _return;
- function _return(value) {
- throw new QReturnValue(value);
- }
- Q.promised = promised;
- function promised(callback) {
- return function () {
- return spread([this, all(arguments)], function (self, args) {
- return callback.apply(self, args);
- });
- };
- }
- Q.dispatch = dispatch;
- function dispatch(object, op, args) {
- var deferred = defer();
- nextTick(function () {
- resolve(object).promiseDispatch(deferred.resolve, op, args);
- });
- return deferred.promise;
- }
- Q.dispatcher = dispatcher;
- function dispatcher(op) {
- return function (object) {
- var args = array_slice(arguments, 1);
- return dispatch(object, op, args);
- };
- }
- Q.get = dispatcher("get");
- Q.set = dispatcher("set");
- Q["delete"] =
- Q.del = dispatcher("delete");
- var post = Q.post = dispatcher("post");
- Q.send = send;
- Q.invoke = send;
- function send(value, name) {
- var args = array_slice(arguments, 2);
- return post(value, name, args);
- }
- Q.fapply = fapply;
- function fapply(value, args) {
- return dispatch(value, "apply", [void 0, args]);
- }
- Q["try"] = fcall;
- Q.fcall = fcall;
- function fcall(value) {
- var args = array_slice(arguments, 1);
- return fapply(value, args);
- }
- Q.fbind = fbind;
- function fbind(value) {
- var args = array_slice(arguments, 1);
- return function fbound() {
- var allArgs = args.concat(array_slice(arguments));
- return dispatch(value, "apply", [this, allArgs]);
- };
- }
- Q.keys = dispatcher("keys");
- Q.all = all;
- function all(promises) {
- return when(promises, function (promises) {
- var countDown = 0;
- var deferred = defer();
- array_reduce(promises, function (undefined, promise, index) {
- if (isFulfilled(promise)) {
- promises[index] = valueOf(promise);
- } else {
- ++countDown;
- when(promise, function (value) {
- promises[index] = value;
- if (--countDown === 0) {
- deferred.resolve(promises);
- }
- }, deferred.reject);
- }
- }, void 0);
- if (countDown === 0) {
- deferred.resolve(promises);
- }
- return deferred.promise;
- });
- }
- Q.allResolved = allResolved;
- function allResolved(promises) {
- return when(promises, function (promises) {
- promises = array_map(promises, resolve);
- return when(all(array_map(promises, function (promise) {
- return when(promise, noop, noop);
- })), function () {
- return promises;
- });
- });
- }
- Q["catch"] =
- Q.fail = fail;
- function fail(promise, rejected) {
- return when(promise, void 0, rejected);
- }
- Q.progress = progress;
- function progress(promise, progressed) {
- return when(promise, void 0, void 0, progressed);
- }
- Q["finally"] =
- Q.fin = fin;
- function fin(promise, callback) {
- return when(promise, function (value) {
- return when(callback(), function () {
- return value;
- });
- }, function (exception) {
- return when(callback(), function () {
- return reject(exception);
- });
- });
- }
- Q.done = done;
- function done(promise, fulfilled, rejected, progress) {
- var onUnhandledError = function (error) {
-
-
- nextTick(function () {
- makeStackTraceLong(error, promise);
- if (Q.onerror) {
- Q.onerror(error);
- } else {
- throw error;
- }
- });
- };
-
- var promiseToHandle = fulfilled || rejected || progress ?
- when(promise, fulfilled, rejected, progress) :
- promise;
- if (typeof process === "object" && process && process.domain) {
- onUnhandledError = process.domain.bind(onUnhandledError);
- }
- fail(promiseToHandle, onUnhandledError);
- }
- Q.timeout = timeout;
- function timeout(promise, ms, msg) {
- var deferred = defer();
- var timeoutId = setTimeout(function () {
- deferred.reject(new Error(msg || "Timed out after " + ms + " ms"));
- }, ms);
- when(promise, function (value) {
- clearTimeout(timeoutId);
- deferred.resolve(value);
- }, function (exception) {
- clearTimeout(timeoutId);
- deferred.reject(exception);
- }, deferred.notify);
- return deferred.promise;
- }
- Q.delay = delay;
- function delay(promise, timeout) {
- if (timeout === void 0) {
- timeout = promise;
- promise = void 0;
- }
- var deferred = defer();
- when(promise, undefined, undefined, deferred.notify);
- setTimeout(function () {
- deferred.resolve(promise);
- }, timeout);
- return deferred.promise;
- }
- Q.nfapply = nfapply;
- function nfapply(callback, args) {
- var nodeArgs = array_slice(args);
- var deferred = defer();
- nodeArgs.push(deferred.makeNodeResolver());
- fapply(callback, nodeArgs).fail(deferred.reject);
- return deferred.promise;
- }
- Q.nfcall = nfcall;
- function nfcall(callback/*, ...args */) {
- var nodeArgs = array_slice(arguments, 1);
- var deferred = defer();
- nodeArgs.push(deferred.makeNodeResolver());
- fapply(callback, nodeArgs).fail(deferred.reject);
- return deferred.promise;
- }
- Q.nfbind = nfbind;
- Q.denodeify = Q.nfbind;
- function nfbind(callback/*, ...args */) {
- var baseArgs = array_slice(arguments, 1);
- return function () {
- var nodeArgs = baseArgs.concat(array_slice(arguments));
- var deferred = defer();
- nodeArgs.push(deferred.makeNodeResolver());
- fapply(callback, nodeArgs).fail(deferred.reject);
- return deferred.promise;
- };
- }
- Q.nbind = nbind;
- function nbind(callback, thisArg /*, ... args*/) {
- var baseArgs = array_slice(arguments, 2);
- return function () {
- var nodeArgs = baseArgs.concat(array_slice(arguments));
- var deferred = defer();
- nodeArgs.push(deferred.makeNodeResolver());
- function bound() {
- return callback.apply(thisArg, arguments);
- }
- fapply(bound, nodeArgs).fail(deferred.reject);
- return deferred.promise;
- };
- }
- Q.npost = npost;
- function npost(object, name, args) {
- var nodeArgs = array_slice(args || []);
- var deferred = defer();
- nodeArgs.push(deferred.makeNodeResolver());
- post(object, name, nodeArgs).fail(deferred.reject);
- return deferred.promise;
- }
- Q.nsend = nsend;
- Q.ninvoke = Q.nsend;
- function nsend(object, name /*, ...args*/) {
- var nodeArgs = array_slice(arguments, 2);
- var deferred = defer();
- nodeArgs.push(deferred.makeNodeResolver());
- post(object, name, nodeArgs).fail(deferred.reject);
- return deferred.promise;
- }
- Q.nodeify = nodeify;
- function nodeify(promise, nodeback) {
- if (nodeback) {
- promise.then(function (value) {
- nextTick(function () {
- nodeback(null, value);
- });
- }, function (error) {
- nextTick(function () {
- nodeback(error);
- });
- });
- } else {
- return promise;
- }
- }
- var qEndingLine = captureLine();
- return Q;
- });
|