同步与异步Synchronous & Asynchronous
一句话
同步是等上一步做完才做下一步;异步是先发起耗时任务,等待期间程序还能响应别的事。
大白话
同步像在窗口排队办事,前面没办完你只能站着等;异步像餐厅取号,拿了号可以先去逛,叫到号再回来取餐。
比喻的边界
拿号后去逛的还是你一个人,异步不等于多了一个帮手同时干活;JavaScript 里它通常只是把等待的时间让出来,而不是多线程并行计算。
拿去就能用
开始做
我在做,需要先,拿到结果后再做下一步。帮我用 async/await 写这段流程,加上加载中和失败提示,并说明哪一步在等待、等待时页面还能不能操作。
还差:功能、第一步,发给 AI 前记得换掉
出错了
我的代码先请求用户信息再显示名字,但页面上名字显示成 undefined,控制台没有报错。我怀疑是没等请求返回就用了数据,先帮我验证,不是就换方向。
想做深
我的页面打开时要请求三个互不依赖的接口,现在一个接一个等,总共要 3 秒。帮我改成同时发起,并说明其中一个失败时页面怎么显示,别影响另外两个。
别这样说 → 这样说
别这样说
数据没出来,是不是异步的问题。
这样说
我点“加载更多”后,列表先显示“没有数据”,一秒后内容才出现。帮我检查获取数据的代码有没有等请求完成再渲染,先说原因,再用最少的改动修好,并告诉我怎么验证。
差别:描述了看到的顺序和时间差,要求最小改动和验证。
容易误解:
误解异步就是多线程,能让计算变快。
其实是异步解决的是“等待时别卡住”,比如等网络、等文件;JavaScript 通常仍在一个主线程上执行,大量计算照样会卡住页面。
展开专业理解
同步调用要等函数做完并返回,调用方才能继续;异步操作先发起,完成后再通过回调、事件或 Promise 把结果交回来。async/await 是 Promise 的简化写法,await 只暂停当前这个 async 函数,不会冻结整个页面。异步流程要处理加载中、失败、超时和重复点击。
来源
- MDN:异步 JavaScript 入门 核对于 2026-09-26