要向JavaScript函数添加超时参数,可以使用Promise和setTimeout函数来实现。下面是一个示例代码:
function withTimeout(fn, timeout) {
return new Promise((resolve, reject) => {
const timer = setTimeout(() => {
reject(new Error('Timeout'));
}, timeout);
fn()
.then((result) => {
clearTimeout(timer);
resolve(result);
})
.catch((error) => {
clearTimeout(timer);
reject(error);
});
});
}
在上面的代码中,withTimeout
函数接受两个参数:fn
是要执行的函数,timeout
是超时时间(以毫秒为单位)。它返回一个Promise对象,该Promise对象在函数执行成功时解析,超时时拒绝。
使用示例:
function fetchData() {
return new Promise((resolve) => {
setTimeout(() => {
resolve('Data fetched successfully');
}, 2000);
});
}
const timeout = 1500;
withTimeout(fetchData, timeout)
.then((result) => {
console.log(result);
})
.catch((error) => {
console.error(error);
});
在上面的示例中,fetchData
函数模拟了一个异步操作,它会在2秒后返回一个成功的结果。我们将fetchData
函数传递给withTimeout
函数,并设置超时时间为1.5秒。如果fetchData
函数在1.5秒内完成,将打印出成功的结果;否则,将打印出超时错误。
这种方法可以应用于任何JavaScript函数,使其具备超时功能,以避免长时间等待或阻塞。
领取专属 10元无门槛券
手把手带您无忧上云