JavaScript异步获取HTML代码并处理超时错误
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) {
// 处理其他错误
}
代码说明:
fetchHTML函数接收两个参数:url和timeout,分别表示目标 URL 和超时时间(默认为 5000 毫秒)。- 使用
AbortController和AbortSignal来控制请求的终止。 - 使用
setTimeout设置超时时间,并在超时后调用controller.abort()取消请求。 - 在
try...catch块中,使用await fetch(url, { signal })发送请求,并在请求成功后使用response.text()获取 HTML 代码。 - 在
catch块中,如果错误类型为AbortError,则返回 '超时' 字符串,否则抛出其他错误。 - 在
finally块中,使用clearTimeout(timer)清除定时器。 - 在调用
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);
}
})();
原文地址: https://www.cveoy.top/t/topic/lPeY 著作权归作者所有。请勿转载和采集!