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

问题描述 投票:0回答:0

给出以下代码

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

await recurse(0);

recurse(i) 将解析为 recurse(i+1) 并且旧的 Promise 将被 GC'd 是有道理的,但我似乎无法找到任何文档来确认 Node 将如何解析下面的内容hood——相反,MDN 似乎暗示这不会发生,而是 promises 会相互叠加,创建一种包装 Promises 的套娃。

在本地运行这段代码似乎同意这一点,但结果是不确定的——程序的总堆大小确实随着时间的推移而增加,但速度太慢以至于其他任何事情都可能导致它。

node.js async-await promise event-loop
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.