【发布时间】:2023-03-14 18:11:01
【问题描述】:
我有以下设置:
async MyFunction(param) {
//... Do some computation
await WriteToDB()
}
io.on('connection', (socket) => {
socket.on('AnEvent', (param) => MyFunction(param))
})
当一个事件进来时,它会调用一个异步函数来进行一些计算,最后通过另一个异步调用将结果写入数据库。
如果MyFunction最后没有异步调用写数据库,例如
MyFunction(param) {
//... Do some computation
}
那么显然所有事件都将按照它们的传入顺序进行处理。下一个事件的处理只有在前一个事件的处理完成后才会开始。但是,由于是异步调用数据库,不知道那些传入的事件是否还会被完全按顺序处理。恐怕下一个事件的处理在前一个await WriteToDB() 完成之前开始。如何更改代码以按顺序完全处理它们?
【问题讨论】:
标签: javascript node.js socket.io