Processing websocket onmessage events in order
我正在使用websocket API,该API在远程数据库上流式传输实时更改,然后将其反映在本地数据库上。 我这一边的操作必须以相同的顺序进行(我会在数据输入时创建和更新记录)。
我的问题是消息经常大量到达,比我处理消息的速度快,最终导致混乱。 在我准备处理下一个消息之前,有没有办法让onmessage等待?
这是我尝试的示例,没有成功:
1 2 3 4 5 6 7 8 9 10 | async doSomething(ev) { return new Promise(async (resolve, reject) => { // database operations, etc. resolve(true); }); } ws.onmessage = async (ev) => { await doSomething(); } |
您可以创建一个队列(例如,一个值数组),然后使用
例如
1 2 3 4 5 6 7 8 9 10 11 12 | new ReadableStream({ pull(controller) { controller.enqueue(event.data) } }) // .. reader.read() .then(({value, done}) => { // do stuff }) |