面试题答案
一键面试fetch('https://example.com/api/data')
.then(response => {
if (!response.ok) {
throw new Error(`HTTP error! status: ${response.status}`);
}
return response.json();
})
.then(data => {
console.log(data);
})
.catch(error => {
console.error('Error:', error);
});
错误处理说明
- 网络错误:如果由于网络问题(如断网、服务器不可达等)导致请求无法发出,
fetch
返回的Promise
会被拒绝,并抛出一个TypeError
。 - HTTP 状态错误:即使请求成功发出并得到响应,但如果 HTTP 状态码不是
2xx
,fetch
不会自动将Promise
标记为拒绝。因此在then
回调中,通过检查response.ok
来判断状态码是否正常,若不正常则手动抛出错误。在catch
块中统一捕获并处理这些错误。