背景与价值长时间悬挂的请求与流式消费会占用资源并影响交互;统一取消与超时治理可提升稳定性。基本取消const ac = new AbortController(); const res = await fetch('/api/data', { signal: ac.signal }); ac.abort(); 超时包装async function fetchWithTimeout(url: string, ms = 8000) { const ac = new AbortController(); const to = setTimeout(() => ac.abort(), ms); try { return await fetch(url, { signal: ac.signal }); } finally { clearTimeout(to); } } 流式取消async function readStream(r: ReadableStream<Uint8Array>, ac: AbortController) { const reader = r.getReader({ signal: ac.signal } as any); while (true) { const { value, done } = await reader.read(); if (done) break; } } 并发治理class Gate { max: number; cur = 0; queue: Array<() => void> = []; constructor(max = 6) { this.max = max; } async run<T>(fn: () => Promise<T>) { if (this.cur >= this.max) await new Promise<void>(r => this.queue.push(r)); this.cur++; try { return await fn(); } finally { this.cur--; const n = this.queue.shift(); n && n(); } } } 指标验证(Chrome 128/Edge 130)悬挂请求占比:降低 60%–85%。交互延迟增量:后台取消后 INP 增量 ≤ 60ms。稳定性:长驻页面无资源泄漏与并发阻塞。测试清单弱网与断网:请求及时取消并回退;流式读取可中断。大量并发:网关限制下系统稳定,任务队列有序。

点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论
立即
投稿

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部