教程 ky tutorial

超时与取消请求

在实际项目中,控制请求超时和能够取消未完成请求非常重要。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 一致,使用简单直观。