diff --git a/README.md b/README.md index 258cc9f..0a1aec6 100644 --- a/README.md +++ b/README.md @@ -48,7 +48,7 @@ A default Promise constructor can be used to create a self-resolving deferred/pr var Promise = require("promise").Promise; var promise = new Promise(); asyncOperation(function(){ - Promise.resolve("succesful result"); + promise.resolve("succesful result"); }); promise -> given to the consumer diff --git a/example-defer.js b/example-defer.js new file mode 100644 index 0000000..f7db995 --- /dev/null +++ b/example-defer.js @@ -0,0 +1,19 @@ +var defer = require("./promise").defer; + +function asyncOperation() { + var dfd = defer(); + setTimeout(function(){ + if("pending" == dfd.state()) { + dfd.resolve("succ result"); + // dfd.reject(new Error("an err")); + } + }, 5000); + return dfd.timeout(3000); + // return dfd.promise; +} + +asyncOperation().then(function(result){ + console.log("on succ: ", result); +}, function(err) { + console.log("on fail: ", err); +}); \ No newline at end of file diff --git a/example-promise.js b/example-promise.js new file mode 100644 index 0000000..a6c3925 --- /dev/null +++ b/example-promise.js @@ -0,0 +1,17 @@ +var promise = require("./promise"); + +promise.execute(function(callback){ + asyncOperation(callback); +}).then(function(result){ + console.log("on succ: ", result); +}, function(err) { + console.log("on fail: ", err); +}); + + +function asyncOperation(callback) { + setTimeout(function(){ + callback(null, "succ result"); + //callback(new Error("an err")); + }, 2000); +}; \ No newline at end of file diff --git a/promise.js b/promise.js index 5bbf349..b42582d 100644 --- a/promise.js +++ b/promise.js @@ -266,6 +266,17 @@ function Deferred(canceller){ reject(error); } } + + this.state = function(){ + var ret = "pending"; + if(isError) { + ret = "rejected"; + } else if(finished) { + ret = "resolved"; + } + return ret; + } + freeze(promise); };