小编Raj*_*med的帖子

为什么无限递归异步函数不会导致堆栈溢出?

我在想,当异步函数递归调用自己无限时会发生什么。我的想法是,它不会导致堆栈溢出。但是我无法确切指出为什么会这样。

const foo = async () => {
    const txt = await Promise.resolve("foo");
    console.log(txt);
    foo();
}

foo();

Run Code Online (Sandbox Code Playgroud)

上面的代码无限打印“ foo”,而不会溢出堆栈。

我的想法是,代码在概念上与以下代码类似,它不会导致堆栈溢出,因为递归调用foo()位于回调内部,而对的原始调用foo()将在此之前返回。

const bar = () => {
    console.log("foo");
    foo();
}

const foo = () => {
    setImmediate(bar);
}

foo();
Run Code Online (Sandbox Code Playgroud)

我正在寻找有关异步功能情况下的确切答案。

javascript async-await

10
推荐指数
2
解决办法
259
查看次数

标签 统计

async-await ×1

javascript ×1