Async Workflows and Source Panels
Async Result Panel
Replay an async function that awaits a typed result and updates local state.
async result
An `async` function can keep replay visible by awaiting deterministic data and then assigning ordinary local values.
Async Result Panel
async_result.ts
Replay: real traced execution (multi-file project)
type ServiceResult = {
prepared: number;
score: number;
};
const fetched: number = 8;
let prepared: number = 0;
let score: number = 0;
async function calculate(value: number): Promise<ServiceResult> {
prepared = value + 1;
const remote: number = await Promise.resolve(prepared + 9);
score = remote;
return { prepared, score };
}
async function main(): Promise<void> {
const result: ServiceResult = await calculate(fetched);
console.log(`fetched=${fetched}`);
console.log(`prepared=${result.prepared}`);
console.log(`score=${result.score}`);
}
main();
type ServiceResult = {
prepared: number;
score: number;
};
const fetched: number = 4;
let prepared: number = 0;
let score: number = 0;
async function calculate(value: number): Promise<ServiceResult> {
prepared = value + 1;
const remote: number = await Promise.resolve(prepared + 9);
score = remote;
return { prepared, score };
}
async function main(): Promise<void> {
const result: ServiceResult = await calculate(fetched);
console.log(`fetched=${fetched}`);
console.log(`prepared=${result.prepared}`);
console.log(`score=${result.score}`);
}
main();
type ServiceResult = {
prepared: number;
score: number;
};
const fetched: number = 12;
let prepared: number = 0;
let score: number = 0;
async function calculate(value: number): Promise<ServiceResult> {
prepared = value + 1;
const remote: number = await Promise.resolve(prepared + 9);
score = remote;
return { prepared, score };
}
async function main(): Promise<void> {
const result: ServiceResult = await calculate(fetched);
console.log(`fetched=${fetched}`);
console.log(`prepared=${result.prepared}`);
console.log(`score=${result.score}`);
}
main();
fetched ← 8, prepared ← 0, score ← 0
3 score: number;4};56const fetched→ 8: number = 8; //@fetched=4, 127let prepared→ 0: number = 0;8let score→ 0: number = 0;910async function calculate(value: number): Promise<ServiceResult> {11 prepared = value + 1;12 const remote: number = await Promise.resolve(prepared + 9);13 score = remote;14 return { prepared, score };15}1617async function main(): Promise<void> {18 const result: ServiceResult = await calculate(fetched);19 console.log(`fetched=${fetched}`);20 console.log(`prepared=${result.prepared}`);21 console.log(`score=${result.score}`);22}2324main();async function main(): Promise<void>
14 return { prepared, score };15}1617async function main(): Promise<void> {18 const result: ServiceResult = await calculate(fetched8);19 console.log(`fetched=${fetched}`);prepared ← 9, value ← 8
7let prepared: number = 0;8let score: number = 0;910async function calculate(value8: number): Promise<ServiceResult> {11 prepared = value→ 8 + 1;12 const remote: number = await Promise.resolve(prepared + 9);13 score = remote;values this step9preparedremote ← 18, prepared ← 9, score ← 18
10async function calculate(value: number): Promise<ServiceResult> {11 prepared = value + 1;12 const remote→ 18: number = await Promise.resolve(prepared→ 9 + 9);13 score = remote18;14 return { prepared, score };15}1617async function main(): Promise<void> {18 const result: ServiceResult = await calculate(fetched);19 console.log(`fetched=${fetched}`);20 console.log(`prepared=${result.prepared}`);21 console.log(`score=${result.score}`);22}2324main();values this step18scoreresult ← [object Object]
17async function main(): Promise<void> {18 const result→ [object Object]: ServiceResult = await calculate(fetched8);19 console.log(`fetched=${fetched8}`);20 console.log(`prepared=${result.prepared9}`);21 console.log(`score=${result.score18}`);22}outputfetched=8 prepared=9 score=18
fetched ← 4, prepared ← 0, score ← 0
3 score: number;4};56const fetched→ 4: number = 4;7let prepared→ 0: number = 0;8let score→ 0: number = 0;910async function calculate(value: number): Promise<ServiceResult> {11 prepared = value + 1;12 const remote: number = await Promise.resolve(prepared + 9);13 score = remote;14 return { prepared, score };15}1617async function main(): Promise<void> {18 const result: ServiceResult = await calculate(fetched);19 console.log(`fetched=${fetched}`);20 console.log(`prepared=${result.prepared}`);21 console.log(`score=${result.score}`);22}2324main();async function main(): Promise<void>
14 return { prepared, score };15}1617async function main(): Promise<void> {18 const result: ServiceResult = await calculate(fetched4);19 console.log(`fetched=${fetched}`);prepared ← 5, value ← 4
7let prepared: number = 0;8let score: number = 0;910async function calculate(value4: number): Promise<ServiceResult> {11 prepared = value→ 4 + 1;12 const remote: number = await Promise.resolve(prepared + 9);13 score = remote;values this step5preparedremote ← 14, prepared ← 5, score ← 14
10async function calculate(value: number): Promise<ServiceResult> {11 prepared = value + 1;12 const remote→ 14: number = await Promise.resolve(prepared→ 5 + 9);13 score = remote14;14 return { prepared, score };15}1617async function main(): Promise<void> {18 const result: ServiceResult = await calculate(fetched);19 console.log(`fetched=${fetched}`);20 console.log(`prepared=${result.prepared}`);21 console.log(`score=${result.score}`);22}2324main();values this step14scoreresult ← [object Object]
17async function main(): Promise<void> {18 const result→ [object Object]: ServiceResult = await calculate(fetched4);19 console.log(`fetched=${fetched4}`);20 console.log(`prepared=${result.prepared5}`);21 console.log(`score=${result.score14}`);22}outputfetched=4 prepared=5 score=14
fetched ← 12, prepared ← 0, score ← 0
3 score: number;4};56const fetched→ 12: number = 12;7let prepared→ 0: number = 0;8let score→ 0: number = 0;910async function calculate(value: number): Promise<ServiceResult> {11 prepared = value + 1;12 const remote: number = await Promise.resolve(prepared + 9);13 score = remote;14 return { prepared, score };15}1617async function main(): Promise<void> {18 const result: ServiceResult = await calculate(fetched);19 console.log(`fetched=${fetched}`);20 console.log(`prepared=${result.prepared}`);21 console.log(`score=${result.score}`);22}2324main();async function main(): Promise<void>
14 return { prepared, score };15}1617async function main(): Promise<void> {18 const result: ServiceResult = await calculate(fetched12);19 console.log(`fetched=${fetched}`);prepared ← 13, value ← 12
7let prepared: number = 0;8let score: number = 0;910async function calculate(value12: number): Promise<ServiceResult> {11 prepared = value→ 12 + 1;12 const remote: number = await Promise.resolve(prepared + 9);13 score = remote;values this step13preparedremote ← 22, prepared ← 13, score ← 22
10async function calculate(value: number): Promise<ServiceResult> {11 prepared = value + 1;12 const remote→ 22: number = await Promise.resolve(prepared→ 13 + 9);13 score = remote22;14 return { prepared, score };15}1617async function main(): Promise<void> {18 const result: ServiceResult = await calculate(fetched);19 console.log(`fetched=${fetched}`);20 console.log(`prepared=${result.prepared}`);21 console.log(`score=${result.score}`);22}2324main();values this step22scoreresult ← [object Object]
17async function main(): Promise<void> {18 const result→ [object Object]: ServiceResult = await calculate(fetched12);19 console.log(`fetched=${fetched12}`);20 console.log(`prepared=${result.prepared13}`);21 console.log(`score=${result.score22}`);22}outputfetched=12 prepared=13 score=22