Skip to content

Commit 26ae358

Browse files
committed
keep unique processingTimeout, but resolve promise inside pendingResponse execution function
1 parent ce4b271 commit 26ae358

File tree

1 file changed

+9
-7
lines changed

1 file changed

+9
-7
lines changed

modules/core/js_modules/Hm_MessagesStore.js

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ class Hm_MessagesStore {
7272

7373
// Batch processing for multiple requests
7474
const pendingResponses = new Map();
75-
const processingTimeouts = {};
75+
let processingTimeout = null;
7676

7777
const processPendingResponses = () => {
7878
if (pendingResponses.size === 0) return;
@@ -116,22 +116,24 @@ class Hm_MessagesStore {
116116
if (messagesReadyCB) {
117117
messagesReadyCB(this);
118118
}
119+
120+
responses.forEach(response => {
121+
response.resolvePromise(response);
122+
});
119123
};
120124

121125
await Promise.all(this.fetch(hideLoadingState).map((req) => {
122126
return new Promise((resolve) => {
123127
req.then((response) => {
128+
response.resolvePromise = resolve;
124129
pendingResponses.set(response.sourceId, response);
125130

126-
if (processingTimeouts[response.sourceId]) {
127-
clearTimeout(processingTimeouts[response.sourceId]);
131+
if (processingTimeout) {
132+
clearTimeout(processingTimeout);
128133
}
129134

130135
// Process after a short delay to allow batching
131-
processingTimeouts[response.sourceId] = setTimeout(() => {
132-
processPendingResponses();
133-
resolve(response);
134-
}, 10);
136+
processingTimeout = setTimeout(processPendingResponses, 10);
135137
}, (error) => {
136138
console.error('Error loading messages from source:', error);
137139
});

0 commit comments

Comments
 (0)