From 5d9cb82bb80378889816038b527c5b8a8391e939 Mon Sep 17 00:00:00 2001 From: Chad Joseph Brown Date: Sat, 2 May 2015 15:55:33 -0700 Subject: [PATCH] Initial commit --- .gitignore | 3 +++ README.md | 2 ++ index.js | 56 ++++++++++++++++++++++++++++++++++++++++++++++++++++ package.json | 20 +++++++++++++++++++ 4 files changed, 81 insertions(+) create mode 100644 .gitignore create mode 100644 README.md create mode 100644 index.js create mode 100644 package.json diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..718cfca --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +.idea/ +node_modules/ + diff --git a/README.md b/README.md new file mode 100644 index 0000000..4cdc3cf --- /dev/null +++ b/README.md @@ -0,0 +1,2 @@ +Aum particle. + diff --git a/index.js b/index.js new file mode 100644 index 0000000..0912098 --- /dev/null +++ b/index.js @@ -0,0 +1,56 @@ +import each from 'aum-each'; + +function Defer(successCallback, failureCallback) { + var next = [], promiseValue; + + this.promise = {}; + + this.promise.then = function (successCallback, failureCallback) { + var deferred = new Defer(successCallback, failureCallback); + + next.push(deferred); + + return deferred.promise; + }; + + this.reject = function (value) { + promiseValue = value; + + try { + if (failureCallback) { + promiseValue = failureCallback(promiseValue); + } + } + catch (e) { + promiseValue = e; + + throw e; + } + + each(next, function (deferred) { + deferred.reject(promiseValue); + }); + }; + + this.resolve = function (value) { + promiseValue = value; + + try { + if (successCallback) { + promiseValue = successCallback(promiseValue); + } + } + catch (e) { + promiseValue = e; + + throw e; + } + + each(next, function (deferred) { + deferred.resolve(promiseValue); + }); + }; +} + +export default Defer; + diff --git a/package.json b/package.json new file mode 100644 index 0000000..da96cd6 --- /dev/null +++ b/package.json @@ -0,0 +1,20 @@ +{ + "name": "aum-defer", + "version": "0.0.4", + "description": "Aum particle.", + "keywords": [ + "aum", + "mvc", + "particle" + ], + "author": { + "name": "Chad Joseph Brown", + "url": "http://www.chadjoseph.com" + }, + "main": "index.js", + "repository": { + "type": "git", + "url": "git://github.com/chadjoseph/aum-defer.git" + } +} +