I want to implement basic Deferred object without using jQuery. Here i will be implementing only done and fail callbacks, with resolve and reject functions. and ofCourse associating promise
method with this function.
i am doing the following implementation in pure js (Edited) :
function Deferred() {
var d = {};
d.resolve = function() {
d.done(arguments);
}
d.reject = function() {
d.fail(arguments);
}
d.promise = function() {
var x = {};
x.done = function(args) {
return args;
}
x.fail = function(args) {
return args;
}
return x;
}
return d;
}
var v;
var setVal = function() {
var d = new Deferred();
setTimeout(function() {
v = 'a value';
d.resolve(this);
}, 5000);
return d.promise();
};
setVal().done(function() {
console.log('all done :' + v);
});
But the above gives the error : Object #<Object> has no method 'fail'
I know the returned object 'd' of Deferred()
function does not have method done(). And if i returns d.promise from Deferred()
this will not have resolve and reject functions.
Please point out what error i am making to achieve the simple objective of Deferred object.
Here is the fiddle i am doing : http://jsfiddle.net/SyEmK/14/