最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

按顺序处理websocket onmessage事件

运维笔记admin10浏览0评论

按顺序处理websocket onmessage事件

按顺序处理websocket onmessage事件

我正在使用websocket API在远程数据库上传输实时更改,然后我将其反映在本地数据库中。我这边的操作必须以相同的顺序完成(我在数据进入时创建和更新记录)。

我的问题是消息通常以批量方式到达,比我处理它们并最终无序。在我准备好处理下一个之前,有没有办法让onmessage等待?

这是我正在尝试的一个例子,没有成功:

async doSomething(ev) {
    return new Promise(async (resolve, reject) => {
        // database operations, etc.
        resolve(true);
    });
}

ws.onmessage = async (ev) => {
    await doSomething();
}
回答如下:

您可以创建一个队列(例如,值数组)并使用Promises(可能还有AsyncIteratorReadableStream,如果需要)按顺序处理数据。

例如

new ReadableStream({
  pull(controller) {
    controller.enqueue(event.data)
  }
})

// ..

reader.read()
.then(({value, done}) => {
  // do stuff
})
发布评论

评论列表(0)

  1. 暂无评论