Skip to content

Commit 71ff29f

Browse files
committed
Fix some bugs
1 parent 2c96e40 commit 71ff29f

3 files changed

Lines changed: 27 additions & 21 deletions

File tree

assets/js/article/browser-task-queues/components/chronote.js

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@ import { SetTimeoutByPartsNoteStore } from "../store/set-timeout-by-parts-note-s
99
import { AwaitedPromiseNoteStore } from "../store/awaited-promise-note-store.js";
1010
import { UnawaitedPromiseNoteStore } from "../store/unawaited-promise-note-store.js";
1111
import { UnawaitedUnmeasuredPromiseNoteStore } from "../store/unawaited-unmeasured-promise-note-store.js";
12-
import { TimingReporter } from "../store/timing-reporter.js";
1312

1413
export class Chronote extends LitElement {
1514
static get properties() {
@@ -27,7 +26,6 @@ export class Chronote extends LitElement {
2726

2827
constructor() {
2928
super();
30-
this.timingReporter = new TimingReporter(this);
3129
}
3230

3331
// No styles in this component.
@@ -68,7 +66,7 @@ export class Chronote extends LitElement {
6866
break;
6967
case "parts":
7068
if (this.store === "setTimeoutByParts") {
71-
this.noteStore = new SetTimeoutByPartsNoteStore(this.parts ?? 1);
69+
this.noteStore = new SetTimeoutByPartsNoteStore(this, this.parts ?? 1);
7270
}
7371
break;
7472
}
@@ -83,11 +81,7 @@ export class Chronote extends LitElement {
8381
async saveNotes() {
8482
this.status = "saving";
8583

86-
const stopTimer = this.timingReporter.startTimer(
87-
"chronotes-save-notes"
88-
);
8984
await this.noteStore.save();
90-
stopTimer();
9185

9286
this.status = "ready";
9387
}

assets/js/article/browser-task-queues/perf-chart.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -85,4 +85,4 @@ function findOrCreateDataset(chart, label, color) {
8585
return dataset;
8686
}
8787

88-
renderPerfGraph("perf-report-graph", ["xc-awaited-promise", "xc-unawaited-promise", "xc-unawaited-unmeasured-promise", "xc-set-timeout"]);
88+
renderPerfGraph("perf-report-graph", ["xc-awaited-promise", "xc-unawaited-promise", "xc-unawaited-unmeasured-promise", "xc-set-timeout", "xc-set-timeout-by-parts"]);
Lines changed: 25 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,39 @@
11
import { compressParts } from "./common.js";
2+
import { TimingReporter } from "./timing-reporter.js";
23

34
export class SetTimeoutByPartsNoteStore {
4-
constructor(parts) {
5+
constructor(elem, parts) {
56
this.parts = parts;
67
this.saveTimerHandles = new Array(parts);
8+
this.timingReporter = new TimingReporter(elem);
79
}
10+
811
async save(notes) {
12+
const stopTimer = this.timingReporter.startTimer(
13+
"set-timeout-by-parts-note-store-save"
14+
);
915
this.saveTimerHandles.forEach(
1016
(handle) => handle && clearTimeout(handle)
1117
);
18+
return new Promise(async resolve => {
19+
await Promise.all(
20+
[...Array(this.parts).keys()].map(
21+
(i) =>
22+
new Promise((resolve) => {
23+
this.saveTimerHandles[i] = setTimeout(() => {
24+
compressParts(notes, this.parts, i);
25+
this.saveTimerHandles[i] = undefined;
26+
resolve();
27+
}, 0);
28+
})
29+
)
30+
);
31+
stopTimer();
32+
resolve();
33+
})
34+
35+
1236

13-
return Promise.all(
14-
[...Array(this.parts).keys()].map(
15-
(i) =>
16-
new Promise((resolve) => {
17-
this.saveTimerHandles[i] = setTimeout(() => {
18-
compressParts(notes, this.parts, i);
19-
this.saveTimerHandles[i] = undefined;
20-
resolve();
21-
}, 0);
22-
})
23-
)
24-
);
2537
}
2638
}
2739

0 commit comments

Comments
 (0)