请解释一下 fetch API 的工作机制,并分析其优势与局限性。
考察说明
考查对 fetch 核心特性的掌握及其在实际应用中的权衡。
回答思路
- 【回答框架 1】fetch 是基于 Promise 的现代浏览器原生网络请求接口,替代了传统的 XMLHttpRequest,提供更简洁的链式调用和流式处理能力。
- 【回答框架 2】优势包括:语法简洁、返回 Promise、支持 async/await;默认不携带 cookies(需显式设置 credentials);支持请求和响应流,便于处理大文件;模块化设计,易于扩展。
- 【回答框架 3】不足包括:不自动处理 HTTP 错误状态,例如 404 或 500 都会 resolve,需要手动检查 response.ok;不支持请求取消(需借助 AbortController);在旧浏览器中兼容性差;无法上传进度监控,适用于现代开发但需考虑兼容层。
- 【关键点 1】fetch 返回 Promise,但只有网络错误才 reject,HTTP 非 2xx 仍 resolve。
- 【关键点 2】fetch 默认不带 cookie,跨域需设置 credentials: 'include'。
- 【关键点 3】取消请求可使用 AbortController 配合 signal。
- 【易错点 1】不要忽略 response.ok 检查,否则会静默处理失败响应。
- 【易错点 2】在 Node.js 或旧环境使用 fetch 需注意兼容性,可能需引入 polyfill。
- 【易错点 3】上传进度暂不支持,需自行实现或使用 XMLHttpRequest。