不要怂,就是干,撸起袖子干!

Commit 9ec3c4f4 by Jan Aagaard Meier

Put the promise util methods in the bottom

1 parent f8efb9f9
Showing with 39 additions and 30 deletions
...@@ -89,19 +89,7 @@ SequelizePromise.settle = function (promises) { ...@@ -89,19 +89,7 @@ SequelizePromise.settle = function (promises) {
return settled; return settled;
} }
function tryCatchApply(fn, args, receiver) {
try {
return fn.apply(receiver, args);
}
catch (e) {
return {e: e};
}
}
SequelizePromise.method = function (fn) { SequelizePromise.method = function (fn) {
if (typeof fn !== "function") {
throw new TypeError(NOT_FUNCTION_ERROR);
}
return function Promise$_method() { return function Promise$_method() {
var value = tryCatchApply(fn, Array.prototype.slice.apply(arguments), this); var value = tryCatchApply(fn, Array.prototype.slice.apply(arguments), this);
...@@ -112,7 +100,7 @@ SequelizePromise.method = function (fn) { ...@@ -112,7 +100,7 @@ SequelizePromise.method = function (fn) {
}; };
}; };
Promise.prototype._resolveFromSyncValue = function(value) { SequelizePromise.prototype._resolveFromSyncValue = function(value) {
if (value && value.hasOwnProperty('e')) { if (value && value.hasOwnProperty('e')) {
this._cleanValues(); this._cleanValues();
this._setRejected(); this._setRejected();
...@@ -121,7 +109,7 @@ Promise.prototype._resolveFromSyncValue = function(value) { ...@@ -121,7 +109,7 @@ Promise.prototype._resolveFromSyncValue = function(value) {
} }
else { else {
var maybePromise = Promise._cast(value, void 0); var maybePromise = Promise._cast(value, void 0);
if (maybePromise instanceof Promise) { if (maybePromise instanceof Promise || maybePromise instanceof SequelizePromise) {
this._follow(maybePromise); this._follow(maybePromise);
} }
else { else {
...@@ -132,7 +120,7 @@ Promise.prototype._resolveFromSyncValue = function(value) { ...@@ -132,7 +120,7 @@ Promise.prototype._resolveFromSyncValue = function(value) {
} }
}; };
SequelizePromise.attempt = SequelizePromise["try"] = function (fn, args, ctx) { SequelizePromise.attempt = SequelizePromise.try = function (fn, args, ctx) {
var value = tryCatchApply(fn, args, ctx) var value = tryCatchApply(fn, args, ctx)
var ret = new SequelizePromise(INTERNAL); var ret = new SequelizePromise(INTERNAL);
...@@ -161,8 +149,7 @@ SequelizePromise.promisify = function (callback, receiver) { ...@@ -161,8 +149,7 @@ SequelizePromise.promisify = function (callback, receiver) {
promise._setTrace(void 0); promise._setTrace(void 0);
var fn = function PromiseResolver$_callback(err, value) { var fn = function PromiseResolver$_callback(err, value) {
if (err) { if (err) {
// var wrapped = wrapAsRejectionError(maybeWrapAsError(err)); var wrapped = maybeWrapAsError(err);
var wrapped = err
promise._attachExtraTrace(wrapped); promise._attachExtraTrace(wrapped);
promise._reject(wrapped); promise._reject(wrapped);
} }
...@@ -179,8 +166,7 @@ SequelizePromise.promisify = function (callback, receiver) { ...@@ -179,8 +166,7 @@ SequelizePromise.promisify = function (callback, receiver) {
callback.apply(_receiver, withAppended(arguments, fn)); callback.apply(_receiver, withAppended(arguments, fn));
} }
catch(e) { catch(e) {
// var wrapped = maybeWrapAsError(e); var wrapped = maybeWrapAsError(e);
var wrapped = e
promise._attachExtraTrace(wrapped); promise._attachExtraTrace(wrapped);
promise._reject(wrapped); promise._reject(wrapped);
} }
...@@ -190,17 +176,6 @@ SequelizePromise.promisify = function (callback, receiver) { ...@@ -190,17 +176,6 @@ SequelizePromise.promisify = function (callback, receiver) {
return promisified; return promisified;
} }
function withAppended(target, appendee) {
var len = target.length;
var ret = new Array(len + 1);
var i;
for (i = 0; i < len; ++i) {
ret[i] = target[i];
}
ret[i] = appendee;
return ret;
}
// Need to hack _then to make sure our promise is chainable // Need to hack _then to make sure our promise is chainable
SequelizePromise.prototype._then = function ( SequelizePromise.prototype._then = function (
didFulfill, didFulfill,
...@@ -406,4 +381,37 @@ SequelizePromise.prototype.proxySql = function(promise) { ...@@ -406,4 +381,37 @@ SequelizePromise.prototype.proxySql = function(promise) {
}); });
}; };
// Utility methods
function withAppended(target, appendee) {
var len = target.length;
var ret = new Array(len + 1);
var i;
for (i = 0; i < len; ++i) {
ret[i] = target[i];
}
ret[i] = appendee;
return ret;
}
function isPrimitive(val) {
return val == null || val === true || val === false ||
typeof val === "string" || typeof val === "number";
}
function maybeWrapAsError(maybeError) {
if (!isPrimitive(maybeError)) return maybeError;
return new Error(asString(maybeError));
}
function tryCatchApply(fn, args, receiver) {
try {
return fn.apply(receiver, args);
}
catch (e) {
return {e: e};
}
}
module.exports = SequelizePromise; module.exports = SequelizePromise;
\ No newline at end of file
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!