主题
超时与取消请求
在实际项目中,控制请求超时和能够取消未完成请求非常重要。Ky 提供了简单的机制来处理这些场景。
设置请求超时
使用 timeout 选项设置请求超时时间(单位:毫秒):
javascript
import ky from 'ky';
async function fetchData() {
try {
const data = await ky.get('https://api.example.com/data', {
timeout: 5000 // 5秒超时
}).json();
console.log(data);
} catch (error) {
if (error.name === 'TimeoutError') {
console.error('请求超时');
} else {
console.error('请求出错:', error);
}
}
}
fetchData();取消请求
使用 AbortController 可以取消正在进行的请求:
javascript
import ky from 'ky';
const controller = new AbortController();
async function fetchData() {
try {
const data = await ky.get('https://api.example.com/data', {
signal: controller.signal
}).json();
console.log(data);
} catch (error) {
if (error.name === 'AbortError') {
console.log('请求已取消');
} else {
console.error('请求出错:', error);
}
}
}
// 触发取消请求
controller.abort();小结
- 使用
timeout可设置请求超时时间,提高请求稳定性。 - 使用
AbortController可以在任意时刻取消请求,防止不必要的网络开销。 - Ky 的超时和取消请求机制与原生 Fetch API 一致,使用简单直观。