From b109414193aa0b34e193dcdc399d6fe9d6161eef Mon Sep 17 00:00:00 2001 From: "Wesley F. Young" Date: Sun, 8 Sep 2024 09:58:52 +0800 Subject: [PATCH] refactor: handle msg in parallel form --- src/core/events.ts | 23 ++++++++++++++++------- 1 file changed, 16 insertions(+), 7 deletions(-) diff --git a/src/core/events.ts b/src/core/events.ts index 9ee7de5c..0f49389f 100644 --- a/src/core/events.ts +++ b/src/core/events.ts @@ -131,13 +131,22 @@ export class NapCatEventChannel extends private initMsgListener() { const msgListener = new NodeIKernelMsgListener(); - msgListener.onRecvMsg = async msgList => { - for (const msg of msgList) { - if (msg.senderUin !== this.core.selfInfo.uin) { - const handled = await this.parseRawMsgToEventAndEmit(msg); - if (!handled) this.emit('message/receive', msg); - } - } + msgListener.onRecvMsg = msgList => { + Promise.allSettled( + msgList.filter(msg => msg.senderUin !== this.core.selfInfo.uin) + .map(msg => { + this.parseRawMsgToEventAndEmit(msg) + .then(handled => { + if (!handled) this.emit('message/receive', msg); + }); + }), + ).then(callRes => { + callRes.forEach(res => { + if (res.status === 'rejected') { + this.core.context.logger.logError('处理消息失败', res.reason); + } + }); + }); }; const msgIdSentCache = new LRUCache(100);