【发布时间】:2019-08-26 00:18:34
【问题描述】:
我在我的 express 服务器中使用 socket.io 和 mongoose。
我的套接字正在使用以下代码监听事件:
socket.on('do something', async () => {
try {
await doA();
doX();
await doB();
doY();
await doC();
} catch (error) {
console.log(error);
}
});
doA、doB 和 doC 是使用 mongoose 写入数据库的异步操作,但通常它们可以是任何返回承诺的方法。
我希望“做某事”同步运行。 如果事件队列同时处理更多事件,我的 mongodb 会出现一致性问题。
换句话说,如果服务器接收到两个“做某事”事件,我希望仅在第一个事件完全处理后(await doC 之后)才处理接收到的第二个事件。不幸的是,“做某事”回调是异步的。
如何处理?
【问题讨论】:
标签: javascript asynchronous mongoose socket.io