From e37c07adb421e1fe4cc24bc95af79e900d4ddff9 Mon Sep 17 00:00:00 2001 From: Joseph Montanaro Date: Mon, 21 Nov 2022 21:23:50 -0800 Subject: [PATCH] rework routing --- src/lib/queue.js | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/lib/queue.js b/src/lib/queue.js index 99678e3..bf78d58 100644 --- a/src/lib/queue.js +++ b/src/lib/queue.js @@ -1,13 +1,19 @@ +/* Simple asynchronous queue. +To make `get` blocking, we create a new promise and store its `resolve` function in `resolvers`. +The next time an item is added to the queue, it will be resolved. +*/ + export default function() { return { items: [], - resolvers: [] + resolvers: [], put(item) { this.items.push(item); - if (resolvers.length > 0) { - resolvers.shift().resolve(); + if (this.resolvers.length > 0) { + let resolver = this.resolvers.shift(); + resolver(); } },