diff options
Diffstat (limited to 'cordova/node_modules/q/queue.js')
| -rwxr-xr-x | cordova/node_modules/q/queue.js | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/cordova/node_modules/q/queue.js b/cordova/node_modules/q/queue.js new file mode 100755 index 0000000..1505fd0 --- /dev/null +++ b/cordova/node_modules/q/queue.js @@ -0,0 +1,35 @@ + +var Q = require("./q"); + +module.exports = Queue; +function Queue() { + var ends = Q.defer(); + var closed = Q.defer(); + return { + put: function (value) { + var next = Q.defer(); + ends.resolve({ + head: value, + tail: next.promise + }); + ends.resolve = next.resolve; + }, + get: function () { + var result = ends.promise.get("head"); + ends.promise = ends.promise.get("tail"); + return result.fail(function (error) { + closed.resolve(error); + throw error; + }); + }, + closed: closed.promise, + close: function (error) { + error = error || new Error("Can't get value from closed queue"); + var end = {head: Q.reject(error)}; + end.tail = end; + ends.resolve(end); + return closed.promise; + } + }; +} + |
