使用fetch()+then()的API调用序列图:同步还是异步?
结论:应表示为异步通信
原因如下:
- 浏览器层面:
fetch发起请求后,主线程不会被阻塞,依然能处理用户交互、页面渲染等其他任务,这是异步操作的核心标志。 - 代码执行逻辑:
fetch()调用后会立刻返回一个Promise对象,后续的.then()只是注册了一个响应回调,代码不会停在fetch调用处等待结果,而是继续执行后面的同步代码。只有当API响应返回后,回调逻辑才会被加入任务队列,等主线程空闲时再执行。 - 你觉得的“代码需要等待响应处理”,只是回调逻辑依赖响应数据,但整个代码流程并没有被阻塞——同步调用是代码卡在调用点直到拿到结果,而异步是调用后直接放行,结果就绪后再触发后续操作。
举个直观的代码执行顺序例子:
console.log('请求发起前'); fetch('/api/data') .then(res => res.json()) .then(data => console.log('处理响应:', data)); console.log('请求发起后,继续执行');
执行顺序是:
- 打印「请求发起前」
- 发起API请求,立即返回Promise
- 打印「请求发起后,继续执行」
- 等待API响应返回,触发
.then()里的逻辑,打印「处理响应: xxx」
内容的提问来源于stack exchange,提问作者Marko
相关产品推荐
相关产品推荐

