JavaScript异步获取HTML代码并处理超时错误

本代码使用JavaScript异步获取HTML代码,并设置超时机制,在超时情况下返回'超时'字符串,同时处理其他错误。

async function fetchHTML(url, timeout = 5000) {
  const controller = new AbortController();
  const signal = controller.signal;
  const timer = setTimeout(() => controller.abort(), timeout);

  try {
    const response = await fetch(url, { signal });
    const data = await response.text();
    return data;
  } catch (error) {
    if (error.name === 'AbortError') return '超时';
    throw new Error('Fetch failed');
  } finally {
    clearTimeout(timer);
  }
}

// 调用fetchHTML函数
 try {
  const data = await fetchHTML(url);
  // 处理返回的数据
} catch (error) {
  // 处理其他错误
}

代码说明:

  1. fetchHTML 函数接收两个参数:urltimeout,分别表示目标 URL 和超时时间(默认为 5000 毫秒)。
  2. 使用 AbortControllerAbortSignal 来控制请求的终止。
  3. 使用 setTimeout 设置超时时间,并在超时后调用 controller.abort() 取消请求。
  4. try...catch 块中,使用 await fetch(url, { signal }) 发送请求,并在请求成功后使用 response.text() 获取 HTML 代码。
  5. catch 块中,如果错误类型为 AbortError,则返回 '超时' 字符串,否则抛出其他错误。
  6. finally 块中,使用 clearTimeout(timer) 清除定时器。
  7. 在调用 fetchHTML 函数时,使用 try...catch 块来处理错误。

注意事项:

  • 确保目标 URL 是有效的。
  • 超时时间可以根据实际情况进行调整。
  • catch 块中,可以根据不同的错误类型进行不同的处理。

示例:

const url = 'https://www.example.com';

(async () => {
  try {
    const data = await fetchHTML(url);
    console.log(data);
  } catch (error) {
    console.error(error);
  }
})();
JavaScript异步获取HTML代码并处理超时错误

原文地址: https://www.cveoy.top/t/topic/lPeY 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录