Async Workflows and Source Panels
Task Slot Summary
Store independent task results in typed slots before summarizing them.
Task Slot Summary
task_slots.ts
type Slot = {
name: "read" | "write";
value: number;
};
const seed: number = ;
const slots: Slot[] = [
{ name: "read", value: 0 },
{ name: "write", value: 0 }
];
function fillReadSlot(value: number): void {
slots[0].value = value + 10;
}
function fillWriteSlot(value: number): void {
slots[1].value = value * 3;
}
fillReadSlot(seed);
fillWriteSlot(seed);
const total: number = slots[0].value + slots[1].value;
console.log(`read=${slots[0].value}`);
console.log(`write=${slots[1].value}`);
console.log(`total=${total}`);
type Slot = {
name: "read" | "write";
value: number;
};
const seed: number = ;
const slots: Slot[] = [
{ name: "read", value: 0 },
{ name: "write", value: 0 }
];
function fillReadSlot(value: number): void {
slots[0].value = value + 10;
}
function fillWriteSlot(value: number): void {
slots[1].value = value * 3;
}
fillReadSlot(seed);
fillWriteSlot(seed);
const total: number = slots[0].value + slots[1].value;
console.log(`read=${slots[0].value}`);
console.log(`write=${slots[1].value}`);
console.log(`total=${total}`);
type Slot = {
name: "read" | "write";
value: number;
};
const seed: number = ;
const slots: Slot[] = [
{ name: "read", value: 0 },
{ name: "write", value: 0 }
];
function fillReadSlot(value: number): void {
slots[0].value = value + 10;
}
function fillWriteSlot(value: number): void {
slots[1].value = value * 3;
}
fillReadSlot(seed);
fillWriteSlot(seed);
const total: number = slots[0].value + slots[1].value;
console.log(`read=${slots[0].value}`);
console.log(`write=${slots[1].value}`);
console.log(`total=${total}`);
task slots
Separate result slots make interleaved or filtered replay easier to reason about because each task has its own state.