Event Loop and Source Panels
Task Result Slots
Store two task results in separate variables before summarizing them.
task-result-slots
Separate result slots make it clear which task produced each value. This is the single-thread JavaScript form of the replay composition model.
Task Result Slots
task_result_slots.js
Replay: real traced execution (multi-file project)
const seed = 5;
let readResult = 0;
let writeResult = 0;
function readTask(value) {
readResult = value + 10;
}
function writeTask(value) {
writeResult = value * 3;
}
readTask(seed);
writeTask(seed);
const total = readResult + writeResult;
console.log("read=" + readResult);
console.log("write=" + writeResult);
console.log("total=" + total);
const seed = 2;
let readResult = 0;
let writeResult = 0;
function readTask(value) {
readResult = value + 10;
}
function writeTask(value) {
writeResult = value * 3;
}
readTask(seed);
writeTask(seed);
const total = readResult + writeResult;
console.log("read=" + readResult);
console.log("write=" + writeResult);
console.log("total=" + total);
const seed = 8;
let readResult = 0;
let writeResult = 0;
function readTask(value) {
readResult = value + 10;
}
function writeTask(value) {
writeResult = value * 3;
}
readTask(seed);
writeTask(seed);
const total = readResult + writeResult;
console.log("read=" + readResult);
console.log("write=" + writeResult);
console.log("total=" + total);
seed ← 5, readResult ← 0, writeResult ← 0
1const seed→ 5 = 5; //@seed=2, 82let readResult→ 0 = 0;3let writeResult→ 0 = 0;45function readTask(value) {6 readResult = value + 10;7}89function writeTask(value) {10 writeResult = value * 3;11}1213readTask(seed5);14writeTask(seed);readResult ← 15, value ← 5
2let readResult = 0;3let writeResult = 0;45function readTask(value5) {6 readResult = value→ 5 + 10;7}values this step15readResultreadTask(seed);
10 writeResult = value * 3;11}1213readTask(seed5);14writeTask(seed5);writeResult ← 15, value ← 5
6 readResult = value + 10;7}89function writeTask(value5) {10 writeResult = value→ 5 * 3;11}values this step15writeResulttotal ← 30, readResult ← 15
13readTask(seed);14writeTask(seed5);1516const total→ 30 = readResult→ 15 + writeResult15;17console.log("read=" + readResult15);18console.log("write=" + writeResult15);19console.log("total=" + total30);outputread=15 write=15 total=30
seed ← 2, readResult ← 0, writeResult ← 0
1const seed→ 2 = 2;2let readResult→ 0 = 0;3let writeResult→ 0 = 0;45function readTask(value) {6 readResult = value + 10;7}89function writeTask(value) {10 writeResult = value * 3;11}1213readTask(seed2);14writeTask(seed);readResult ← 12, value ← 2
2let readResult = 0;3let writeResult = 0;45function readTask(value2) {6 readResult = value→ 2 + 10;7}values this step12readResultreadTask(seed);
10 writeResult = value * 3;11}1213readTask(seed2);14writeTask(seed2);writeResult ← 6, value ← 2
6 readResult = value + 10;7}89function writeTask(value2) {10 writeResult = value→ 2 * 3;11}values this step6writeResulttotal ← 18, readResult ← 12
13readTask(seed);14writeTask(seed2);1516const total→ 18 = readResult→ 12 + writeResult6;17console.log("read=" + readResult12);18console.log("write=" + writeResult6);19console.log("total=" + total18);outputread=12 write=6 total=18
seed ← 8, readResult ← 0, writeResult ← 0
1const seed→ 8 = 8;2let readResult→ 0 = 0;3let writeResult→ 0 = 0;45function readTask(value) {6 readResult = value + 10;7}89function writeTask(value) {10 writeResult = value * 3;11}1213readTask(seed8);14writeTask(seed);readResult ← 18, value ← 8
2let readResult = 0;3let writeResult = 0;45function readTask(value8) {6 readResult = value→ 8 + 10;7}values this step18readResultreadTask(seed);
10 writeResult = value * 3;11}1213readTask(seed8);14writeTask(seed8);writeResult ← 24, value ← 8
6 readResult = value + 10;7}89function writeTask(value8) {10 writeResult = value→ 8 * 3;11}values this step24writeResulttotal ← 42, readResult ← 18
13readTask(seed);14writeTask(seed8);1516const total→ 42 = readResult→ 18 + writeResult24;17console.log("read=" + readResult18);18console.log("write=" + writeResult24);19console.log("total=" + total42);outputread=18 write=24 total=42