javascript异步请求首选fetch api,基于promise支持async/await;get需检查response.ok,post需设置headers和json.stringify;旧浏览器用xmlhttprequest;注意cors、abortcontroller取消及超时处理。

JavaScript 中发送异步网络请求,最常用的是 fetch API(现代标准)和 XMLHttpRequest(传统方式)。推荐优先使用 fetch,它更简洁、基于 Promise,天然支持 async/await。
用 fetch 发送 GET 请求
fetch 默认就是异步的,返回一个 Promise:
- 基本写法:
fetch(url)发起请求,返回 Promise,需用.then()或async/await处理响应 - 响应体需手动解析:比如
response.json()或response.text() - 注意:
fetch不会因 HTTP 状态码(如 404、500)自动 reject,需手动检查response.ok
示例:
async function getData() {
try {
const response = await fetch('/api/users');
if (!response.ok) throw new Error(`HTTP error: ${response.status}`);
const data = await response.json();
console.log(data);
} catch (err) {
console.error('请求失败:', err);
}
}
用 fetch 发送 POST 请求(带 JSON 数据)
需要设置请求头和请求体:
- 设置
headers:指定'Content-Type': 'application/json' - 用
JSON.stringify()将对象转为字符串作为body - method 字段显式声明为
'POST'
示例:
async function createUser(user) {
const response = await fetch('/api/users', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify(user)
});
return response.json();
}
兼容旧浏览器?用 XMLHttpRequest
如果必须支持 IE10 及更早版本,可用 XMLHttpRequest:
- 创建实例:
const xhr = new XMLHttpRequest() - 配置请求:
xhr.open('GET', url),然后xhr.send() - 监听响应:
xhr.onload(成功)、xhr.onerror(网络错误) - 解析 JSON:
JSON.parse(xhr.responseText)
常见注意事项
- CORS 问题:跨域请求需服务端设置
Access-Control-Allow-Origin - 取消请求:fetch 本身不支持取消,可用
AbortController实现(传入signal选项) - 超时控制:fetch 没有内置 timeout,需配合
AbortController+setTimeout手动实现 - 表单提交:如需上传文件或传统表单数据,可使用
FormData对象作为body,此时不要设Content-Type(浏览器会自动设置边界)
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











