初始内容

如何理解JS 的异步?

更新时间:2026-04-22 作者:墨鱼

    JS是一门单线程的语言,这是因为它运行在浏览璟的渲染主线程中,而渲染主线程只有一个。而渲染主线程承担着诸多的工作,渲染页面、执行JS都在其中运行。如果使用同步的方式,就极有可能导致主线程产生阻塞,从而导致消息队列中的很多其他任务无法得到执行这样一来,一方面会导致繁忙的主线程白白的消耗时间,另一方面导致页面无法及时更新,给用户造成卡死现家

    所以浏览器采用异步的方式来避免。具体做法是当某些任务发生时,比如计时器、网络、事件监听,主线程将任务交给其他线程去处理,自身立即结束任务的执行,转而执行后续代码。当其他线程完成时,将事先传递的回调函数包装成任务,加入到消息队列的末尾排队,等待主线程调度执行。在这种异步模式下,浏览器永不阻塞,从而最大限度的保证了单线程的流畅运行。

如何理解JS 的异步?

同步 vs 异步

1. 同步(Sync) 代码按顺序执行,上一行没做完,下一行必须等着。 - 缺点:遇到网络请求、定时器、文件读取等耗时操作,会卡死页面。

console.log("开始");
// 死等2秒
for(let i=0;i<1000000000;i++){} 
console.log("结束"); // 2秒后才执行

2. 异步(Async) 耗时操作交给浏览器/Node处理,代码继续往下走,等操作完成后再回头执行回调。 - 优点:不阻塞主线程,页面不会卡死。

console.log("开始");
// 异步:交给浏览器,不阻塞代码
setTimeout(()=>{
  console.log("2秒后执行");
},2000);
console.log("结束"); // 立即执行,不用等2秒

执行顺序:开始 → 结束 → 2秒后执行

相关推荐

如何理解JS 的异步?

JavaScriptjs如何判断数组类型

小站简介

一位90后博主,会营销、开发小网页,始终保持学习的热情。结合自己的经历经验,不断学习进步的一名小白,同时分享记录生活、学习技术心得与成长经验...

站长微信:recluse0815

合作:

Copyright © 2015-2025 Swiper中文网,蜀ICP备15001020号, All Rights Reserved。