Skip to content

Instantly share code, notes, and snippets.

@kejun
Created February 7, 2013 08:41
Show Gist options
  • Save kejun/4729561 to your computer and use it in GitHub Desktop.
Save kejun/4729561 to your computer and use it in GitHub Desktop.
function deferred() {
var callbacks = {
done: [],
fail: []
};
var promise = {
done: function(callback) {
callbacks.done.push(callback);
return promise;
},
fail: function(callback) {
callbacks.fail.push(callback);
return promise;
}
};
return {
resolve: function() {
var i = 0, cb;
for(;cb = callbacks['done'][i++];) {
cb.apply(this, arguments);
}
},
reject: function() {
var i = 0, cb;
for(;cb = callbacks['fail'][i++];) {
cb.apply(this, arguments);
}
},
promise: promise
};
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment