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

setTimeout函数是在后台运行还是并行执行?

问题解答

先看你给出的代码:

setTimeout(function(){
     console.log("hello async")
     }, 1000);
console.log("Hello sync");

首先要明确:JavaScript是单线程执行模型,既不是后台运行也不是并行执行。

具体执行逻辑是这样的:

  • 主线程优先执行所有同步代码,所以会先输出Hello sync。
  • 调用setTimeout时,浏览器会启动一个独立的定时器线程负责计时(这个线程属于浏览器提供的宿主环境,并非JS主线程),等1秒计时结束后,会把setTimeout的回调函数放进任务队列。
  • 只有当JS主线程的同步任务全部执行完毕、处于空闲状态时,才会从任务队列里取出回调函数执行,这时才输出hello async。

简单总结:setTimeout的计时环节靠浏览器的其他线程完成,但回调函数的执行必须等待主线程空闲,全程没有并行执行JS代码,也不存在JS主线程后台运行任务的情况。

内容的提问来源于stack exchange,提问作者Kunal Ranjan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 03:42:07