复查修掉新引入的忙等、无界项目读取与过紧的前置预算
忙等(最严重,上一条新引入):归属过滤只加在 expiredIds,没加在 resolveNextInlineGenerationDialogExpiryAt。被本会话持有的超窗占位不进 expiredIds, 却仍被算出一个已过去的到期时刻,delayMs 塌成 50ms,触发→tick→重跑→再挂,变成 每 50 毫秒一次 setState 的忙等。改为先按归属过滤出 unownedDialogs 供两处共用。 loadEditorProject 同样没传 timeoutMs,而 composeAbortSignal 缺失时不设默认值。 它是对账路径上的读取,挂住会让 catch 迟迟不结束,连带把占位拖过窗口——正是上面 那个忙等的助推。补 60 秒。 前置预算 40 秒过紧:该阶段会真的直传一张画布图层,几 MB 在较差网络下要几十秒, 用「无界」换「过紧」同样是回归。改为 90 秒,窗口同步 180→240,维持 90 + 120 = 210 < 240 并留 30 秒余量。三个常量构成的跨文件不等式新增用例钉住。 Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -785,6 +785,10 @@ export async function loadEditorProject(projectId: string) {
|
||||
`${EDITOR_PROJECT_API_BASE}/${encodeURIComponent(projectId)}`,
|
||||
{ method: 'GET' },
|
||||
'读取图片画布工程失败',
|
||||
// 中文注释:本文件多数接口都显式写了超时,这里此前没有——而 composeAbortSignal 在
|
||||
// timeoutMs 缺失时不设任何默认值。它是未知结果对账路径上的读取,挂住会让 catch 迟迟
|
||||
// 不结束,本会话对占位的归属登记要到 finally 才释放,连带把占位拖过存活窗口。
|
||||
{ timeoutMs: 60_000 },
|
||||
);
|
||||
return response.project;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user