登录
No.38核心1 条来源

同步与异步Synchronous & Asynchronous

课堂投屏

一句话

同步是等上一步做完才做下一步;异步是先发起耗时任务,等待期间程序还能响应别的事。

大白话

同步像在窗口排队办事,前面没办完你只能站着等;异步像餐厅取号,拿了号可以先去逛,叫到号再回来取餐。

比喻的边界

拿号后去逛的还是你一个人,异步不等于多了一个帮手同时干活;JavaScript 里它通常只是把等待的时间让出来,而不是多线程并行计算。

拿去就能用

开始做

我在做,需要先,拿到结果后再做下一步。帮我用 async/await 写这段流程,加上加载中和失败提示,并说明哪一步在等待、等待时页面还能不能操作。

还差:功能、第一步,发给 AI 前记得换掉

出错了

我的代码先请求用户信息再显示名字,但页面上名字显示成 undefined,控制台没有报错。我怀疑是没等请求返回就用了数据,先帮我验证,不是就换方向。

想做深

我的页面打开时要请求三个互不依赖的接口,现在一个接一个等,总共要 3 秒。帮我改成同时发起,并说明其中一个失败时页面怎么显示,别影响另外两个。

别这样说 → 这样说

别这样说

数据没出来,是不是异步的问题。

这样说

我点“加载更多”后,列表先显示“没有数据”,一秒后内容才出现。帮我检查获取数据的代码有没有等请求完成再渲染,先说原因,再用最少的改动修好,并告诉我怎么验证。

差别:描述了看到的顺序和时间差,要求最小改动和验证。

容易误解:

误解异步就是多线程,能让计算变快。

其实是异步解决的是“等待时别卡住”,比如等网络、等文件;JavaScript 通常仍在一个主线程上执行,大量计算照样会卡住页面。

展开专业理解

同步调用要等函数做完并返回,调用方才能继续;异步操作先发起,完成后再通过回调、事件或 Promise 把结果交回来。async/await 是 Promise 的简化写法,await 只暂停当前这个 async 函数,不会冻结整个页面。异步流程要处理加载中、失败、超时和重复点击。

来源

  1. MDN:异步 JavaScript 入门 核对于 2026-09-26