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

递归调用setTimeout的JavaScript代码是否会造成栈溢出?

结论:这段代码不会导致栈溢出

原因分析:

  • axios.get()返回的是Promise对象,它的.then()和.catch()回调都属于异步微任务,会在当前调用栈完全清空后才执行,不会在原调用栈里堆叠层级。
  • 最关键的是最后一步的setTimeout:它属于异步宏任务,会在5秒后把内部的some_function()调用放到宏任务队列。等到执行这个回调时,之前所有的调用栈早就已经被销毁清空了。
  • 每次some_function()的调用都是在全新的调用栈里启动的,不存在调用栈层级持续累积的情况,自然不会触发栈溢出。

小补充:

你的代码最后少了一个闭合的},补上才能正常运行,但这和栈溢出问题无关。

内容的提问来源于stack exchange,提问作者Paul Mantziaris

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 04:05:16