mirror of
https://github.com/cesanta/mongoose.git
synced 2026-11-10 16:31:44 +00:00
Read events at once
This commit is contained in:
1 parent
ce20dafcfd
commit
2bd13458f5
1 file changed
+16
-11
@@ -14,11 +14,15 @@
|
|||||||
|
|
||||||
let pageStart = 0;
|
let pageStart = 0;
|
||||||
let loading = false;
|
let loading = false;
|
||||||
|
let eventReadQueue = Promise.resolve();
|
||||||
|
|
||||||
async function readEvent(index) {
|
async function readEvent(index) {
|
||||||
await Dashboard.call('set', { event: { index } });
|
eventReadQueue = eventReadQueue.then(async () => {
|
||||||
const ev = await Dashboard.call('get', 'event');
|
await Dashboard.call('set', { event: { index } });
|
||||||
return ev && typeof ev == 'object' ? ev : { index, message: `my ev ${index}` };
|
const ev = await Dashboard.call('get', 'event');
|
||||||
|
return ev && typeof ev == 'object' ? ev : { index, message: `my ev ${index}` };
|
||||||
|
});
|
||||||
|
return eventReadQueue;
|
||||||
}
|
}
|
||||||
|
|
||||||
function setLoading(value) {
|
function setLoading(value) {
|
||||||
@@ -38,20 +42,21 @@
|
|||||||
setLoading(true);
|
setLoading(true);
|
||||||
|
|
||||||
try {
|
try {
|
||||||
for (let i = pageStart; i < pageStart + count; i++) {
|
const rows = await Promise.all(Array.from({ length: count }, (_, i) =>
|
||||||
|
readEvent(pageStart + i)));
|
||||||
|
const frag = document.createDocumentFragment();
|
||||||
|
|
||||||
|
rows.forEach(ev => {
|
||||||
const tr = document.createElement('tr');
|
const tr = document.createElement('tr');
|
||||||
const tdIndex = document.createElement('td');
|
const tdIndex = document.createElement('td');
|
||||||
const tdMessage = document.createElement('td');
|
const tdMessage = document.createElement('td');
|
||||||
|
|
||||||
tdIndex.textContent = i;
|
|
||||||
tdMessage.textContent = 'Loading...';
|
|
||||||
tr.append(tdIndex, tdMessage);
|
|
||||||
tbody.appendChild(tr);
|
|
||||||
|
|
||||||
const ev = await readEvent(i);
|
|
||||||
tdIndex.textContent = ev.index;
|
tdIndex.textContent = ev.index;
|
||||||
tdMessage.textContent = ev.message;
|
tdMessage.textContent = ev.message;
|
||||||
}
|
tr.append(tdIndex, tdMessage);
|
||||||
|
frag.appendChild(tr);
|
||||||
|
});
|
||||||
|
tbody.replaceChildren(frag);
|
||||||
status.textContent = `Showing ${pageStart}..${pageStart + count - 1}`;
|
status.textContent = `Showing ${pageStart}..${pageStart + count - 1}`;
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
status.textContent = `Error: ${err && err.message ? err.message : err}`;
|
status.textContent = `Error: ${err && err.message ? err.message : err}`;
|
||||||
|
|||||||
Reference in new issue
Block a user