MessageReceiver.queueAllCached: Give event loop a rest

We don't want to queue multiple hundreds of messages at once, so we
let the event loop catch up every 20 messages queued.
This commit is contained in:
Scott Nonnenberg 2018-08-15 15:14:12 -07:00
parent b3d56276a8
commit 15751f3521
1 changed files with 10 additions and 5 deletions

View File

@ -268,12 +268,17 @@ MessageReceiver.prototype.extend({
ev.count = count;
this.dispatchEvent(ev);
},
queueAllCached() {
return this.getAllFromCache().then(items => {
for (let i = 0, max = items.length; i < max; i += 1) {
this.queueCached(items[i]);
async queueAllCached() {
const items = await this.getAllFromCache();
for (let i = 0, max = items.length; i < max; i += 1) {
if (i > 0 && i % 20 === 0) {
window.log.info('queueAllCached: Giving event loop a rest');
// eslint-disable-next-line no-await-in-loop
await new Promise(resolve => setTimeout(resolve, 2000));
}
});
this.queueCached(items[i]);
}
},
async queueCached(item) {
try {