gpt4 book ai didi

javascript - 如何处理 JavaScript 中的 setTimeout 错误?

转载 作者:IT老高 更新时间:2023-10-28 23:00:43 28 4
gpt4 key购买 nike

关于try/catch for function in setTimeout

的简单问题
try {
setTimeout(function () {
throw new Error('error!');
}, 300)
} catch (e) {
console.log('eeee!')
console.log(e)
}

为什么 catch block 不起作用?

我能读到什么?

P.S:问题是关于处理此类错误的可能性。不要回答 promise 。

最佳答案

计划使用 setTimeout 运行的函数在主循环中执行,在生成它们的代码体之外。

要处理错误,请将 try-catch 放在 setTimeout 处理程序中:

setTimeout(function () {
try {
throw new Error('error!');
} catch (e) {
console.error(e);
}
}, 300)

如果您需要从调用 setTimeout 的 block 中访问 Error 对象,请使用 Promises :

const promise = new Promise((resolve, reject) => {
setTimeout(function () {
try {
throw new Error('error!');
resolve(); // if the previous line didn't always throw

} catch (e) {
reject(e)
}
}, 300)
})

promise
.then(result => console.log("Ok " + result))
.catch(error => console.error("Ouch " + error))

上面的这个例子并不是处理 Promise 的最优雅的方式。相反,实现一个 delay(ms) 函数,如下所示:

function delay(ms) {
return new Promise(resolve => setTimeout(resolve, ms))
}

然后调用

delay(300).then(myFunction).catch(handleError)

关于javascript - 如何处理 JavaScript 中的 setTimeout 错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41431605/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com