|
|
@@ -3,31 +3,29 @@ var Promise = {
|
|
|
|
|
|
construct: function(executor) {
|
|
|
var deferred = $.Deferred();
|
|
|
+ var promise = deferred.promise();
|
|
|
|
|
|
if (typeof executor === 'function') {
|
|
|
executor(
|
|
|
- function(value) { // resolve
|
|
|
- deferred.resolve(value);
|
|
|
+ function(val) { // resolve
|
|
|
+ deferred.resolve(val);
|
|
|
+ attachImmediatelyResolvingThen(promise, val);
|
|
|
},
|
|
|
function() { // reject
|
|
|
deferred.reject();
|
|
|
+ attachImmediatelyRejectingThen(promise);
|
|
|
}
|
|
|
);
|
|
|
}
|
|
|
|
|
|
- return deferred.promise();
|
|
|
+ return promise;
|
|
|
},
|
|
|
|
|
|
resolve: function(val) {
|
|
|
var deferred = $.Deferred().resolve(val);
|
|
|
var promise = deferred.promise();
|
|
|
|
|
|
- // make .then callback execute immediately
|
|
|
- promise.then = function(onResolve) {
|
|
|
- if (typeof onResolve === 'function') {
|
|
|
- onResolve(val);
|
|
|
- }
|
|
|
- };
|
|
|
+ attachImmediatelyResolvingThen(promise, val);
|
|
|
|
|
|
return promise;
|
|
|
},
|
|
|
@@ -36,16 +34,30 @@ var Promise = {
|
|
|
var deferred = $.Deferred().reject();
|
|
|
var promise = deferred.promise();
|
|
|
|
|
|
- // make .then callback execute immediately
|
|
|
- promise.then = function(onResolve, onReject) {
|
|
|
- if (typeof onReject === 'function') {
|
|
|
- onReject();
|
|
|
- }
|
|
|
- };
|
|
|
+ attachImmediatelyRejectingThen(promise);
|
|
|
|
|
|
return promise;
|
|
|
}
|
|
|
|
|
|
};
|
|
|
|
|
|
+
|
|
|
+function attachImmediatelyResolvingThen(promise, val) {
|
|
|
+ promise.then = function(onResolve) {
|
|
|
+ if (typeof onResolve === 'function') {
|
|
|
+ onResolve(val);
|
|
|
+ }
|
|
|
+ };
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+function attachImmediatelyRejectingThen(promise) {
|
|
|
+ promise.then = function(onResolve, onReject) {
|
|
|
+ if (typeof onReject === 'function') {
|
|
|
+ onReject();
|
|
|
+ }
|
|
|
+ };
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
FC.Promise = Promise;
|