Move p-listen to stand-alone package
parent
20d060306a
commit
6dbc0597fe
@ -1,28 +0,0 @@
|
|||||||
"use strict";
|
|
||||||
|
|
||||||
const consumable = require("@joepie91/consumable");
|
|
||||||
|
|
||||||
// TODO: Move to separate package, p-listener or something
|
|
||||||
module.exports = function createPromiseListener() {
|
|
||||||
let listeners = consumable([]);
|
|
||||||
|
|
||||||
function consumeListeners() {
|
|
||||||
/* To ensure that a resolve/reject is atomic, and can never apply to the same listener queue twice. */
|
|
||||||
return listeners.replace([]);
|
|
||||||
}
|
|
||||||
|
|
||||||
return {
|
|
||||||
listen: function () {
|
|
||||||
return new Promise((resolve, _reject) => {
|
|
||||||
listeners.peek().push(resolve);
|
|
||||||
});
|
|
||||||
},
|
|
||||||
notify: function (promise) {
|
|
||||||
consumeListeners().forEach((listener) => {
|
|
||||||
// Docs: Pass in a rejected promise to produce a rejection on listeners
|
|
||||||
listener(promise);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
Loading…
Reference in New Issue