Blame view
node_modules/q/queue.js
941 Bytes
f7563de62
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
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; } }; } |