You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

递归异步函数返回Promise会导致栈/堆溢出吗?

异步递归场景下Promise的垃圾回收疑问

给定以下代码片段:

async function recurse() {
    await someAsyncStuff();
    return recurse();
}

await recurse(0);

从逻辑上推测,recurse(i)会解析为recurse(i+1),旧的Promise应该会被垃圾回收(GC),但找不到Node底层处理逻辑的官方文档确认这一点。相反,MDN的相关内容似乎暗示实际情况并非如此——Promise会相互嵌套堆叠,形成套娃式的包装结构。

本地运行这段代码时,程序的总堆内存确实会随时间增长,但增长速度极慢,无法确定这是Promise堆叠导致的,还是其他因素(比如异步操作本身的内存开销、GC延迟等)引发的。

内容的提问来源于stack exchange,提问作者Dusan Kovacevic

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 01:39:39