我在思考一个异步函数无限递归调用自身时会发生什么。我的想法是它不会导致堆栈溢出。但我无法确切地指出为什么会这样。
const foo = async () => {
const txt = await Promise.resolve("foo");
console.log(txt);
foo();
}
foo();
上面的代码会无限地打印 "foo",而不会导致堆栈溢出。
我的想法是这段代码在概念上类似于以下代码,它不会导致堆栈溢出,因为对 foo()
的递归调用在回调函数内部,原始对 foo()
的调用将在此之前返回。
const bar = () => {
console.log("foo");
foo();
}
const foo = () => {
setImmediate(bar);
}
foo();
我正在寻找有关异步函数情况下发生的确切答案。
await foo()
,很可能会有内存泄漏的问题。 - Bergi