Look at this jQuery code:
var promise = new Deferred(),
some;
some = function(promise) {
// do cool things
promise.resolve();
};
promise.then(
Here's a basic implementation that would preserve your application flow as-is.
Do not use this in real life - you'd be missing out on throw safety (thanks to @BenjaminGruenbaum for the hint).
var MyDeferred = function() {
var _resolve,
_reject,
capturedPromise = new Promise(function(resolve, reject){
_resolve = resolve;
_reject = reject;
});
return {
'resolve' : _resolve,
'reject' : _reject,
'then' : function() { capturedPromise.then.apply(capturedPromise, arguments); },
'catch' : function() { capturedPromise.catch.apply(capturedPromise, arguments); }
}
};
The execution flow would be a little different, but basically work the same way:
function some(resolve, reject) {
resolve();
}
var promise = new Promise(some);
promise.then(/* callback cool things */);
Instead of some
getting passed the promise itself, it gets passed the resolve
and reject
functions. So, the dependency is just the other way round.