Promise
和 fetch()
之间的联系非常紧密。fetch()
是基于 Promise
的一种 API,用来发起网络请求。它返回一个 Promise
,让你能够使用 then()
、catch()
和 async/await
来处理异步操作的结果。
fetch()
返回的是一个 Promise
fetch()
是现代 JavaScript 用于发起 HTTP 请求的标准方法。它默认返回一个 Promise
,该 Promise
在请求完成时解决(resolved),并返回 Response
对象(如果请求成功)。如果请求失败(例如网络问题),该 Promise
会被拒绝(rejected),并返回错误信息。
示例:
javascriptfetch('https://api.example.com/data')
.then(response => {
// 当请求成功时,返回响应数据
return response.json(); // 将响应转为 JSON 格式
})
.then(data => {
// 处理 JSON 数据
console.log(data);
})
.catch(error => {
// 处理错误
console.error('请求失败:', error);
});
在这个例子中,fetch()
返回一个 Promise
,你使用 .then()
来处理响应,使用 .catch()
来处理错误。
fetch()
返回的 Promise
与网络请求的状态fetch()
本身并不会拒绝 Promise
,即使请求失败(例如 404 或 500 错误)。它只会拒绝在以下情况下:
即使服务器返回 404 或 500 错误,fetch()
也会将 Promise
状态设置为 resolved
,但 Response
对象的 ok
属性将为 false
。你仍然需要手动检查响应的状态码,来判断请求是否成功。
javascriptfetch('https://api.example.com/data')
.then(response => {
if (!response.ok) {
return Promise.reject('网络错误或响应失败'); // 自定义错误处理
}
return response.json();
})
.then(data => {
console.log(data);
})
.catch(error => {
console.error('请求失败:', error);
});
async/await
处理 fetch()
和 Promise
因为 fetch()
返回的是一个 Promise
,你也可以使用 async/await
来简化异步代码。
javascriptasync function fetchData() {
try {
const response = await fetch('https://api.example.com/data');
if (!response.ok) {
throw new Error('请求失败');
}
const data = await response.json();
console.log(data);
} catch (error) {
console.error('请求失败:', error);
}
}
fetchData();
在这个例子中,await
等待 fetch()
完成并返回 Response
对象。如果响应不成功(response.ok
为 false
),则抛出错误。catch
用来捕获错误并处理。
fetch()
返回一个 Promise
,使得你可以使用 then()
、catch()
或 async/await
来处理异步结果。Promise
用于表示异步操作的最终结果(成功或失败),而 fetch()
则通过 Promise
机制让我们能够处理 HTTP 请求的成功与失败。Promise
和 fetch()
来执行链式操作,或者通过 async/await
语法让代码更简洁和易于阅读。因此,Promise
是 fetch()
处理异步请求的核心机制,两者密切结合,帮助开发者以更加清晰、结构化的方式处理 HTTP 请求和响应。
本文作者:空白格
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!