Skip to content

Instantly share code, notes, and snippets.

@davit-khaburdzania
Created November 17, 2013 08:38
Show Gist options
  • Save davit-khaburdzania/7510896 to your computer and use it in GitHub Desktop.
Save davit-khaburdzania/7510896 to your computer and use it in GitHub Desktop.
simple promises implementation for fun
function Promise () {
var fail,then, instance, thenCb, failCb, self = this;
self.resolve = function (data) {
if (thenCb) {
thenCb(data);
}
};
self.reject = function (error) {
if (failCb) {
failCb(error);
}
};
instance = {
fail: function (cb) {
failCb = cb;
return self.get();
},
then: function (cb) {
thenCb = cb;
return self.get();
}
};
self.get = function () {
return instance;
}
};
//example usage
var fs = require('fs');
function read (name) {
var promise = new Promise();
fs.readFile(name , function (error, data) {
if (error) {
promise.reject(error);
}
if (data) {
promise.resolve(data);
}
});
return promise.get();
};
read('viri.txt')
.then(function (data) {
console.log('wow i got data');
})
.fail(function () {
console.log('shit failed')
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment