补充聊天室前端关键逻辑注释
This commit is contained in:
@@ -9,11 +9,13 @@
|
||||
export function createMessageQueue(options = {}) {
|
||||
const limit = Math.max(Number.parseInt(options.limit, 10) || 200, 1);
|
||||
const queue = [];
|
||||
// 标记当前帧是否已排队刷新,避免高频消息在同一帧内重复触发渲染。
|
||||
let flushScheduled = false;
|
||||
|
||||
const scheduler = typeof options.scheduler === "function"
|
||||
? options.scheduler
|
||||
: (callback) => {
|
||||
// 浏览器优先跟随 RAF 合并刷新,测试或无 RAF 环境回退到短 timeout。
|
||||
const requestFrame = globalThis.requestAnimationFrame || ((handler) => globalThis.setTimeout(handler, 16));
|
||||
|
||||
return requestFrame(callback);
|
||||
@@ -34,6 +36,7 @@ export function createMessageQueue(options = {}) {
|
||||
enqueue(message) {
|
||||
queue.push(message);
|
||||
|
||||
// 队列超过上限时丢弃最旧消息,避免离线积压拖慢后续批量渲染。
|
||||
while (queue.length > limit) {
|
||||
queue.shift();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user