您现在的位置是:首页 > Javascript
当前栏目
js setTimeout 错误捕获
2023-02-18 16:33:38 时间
方法一
全局重写 setTimeout
function overrideSetTimeout(fn){
return function(callback, delay, params){
var _callback = function(){
try{
callback();
}catch(err){
console.log(err)
}
}
fn(_callback,delay);
}
}
setTimeout = overrideSetTimeout(setTimeout);
setTimeout(function(){
throw new Error("hhh")
},1000);
方法二
封装为 promise,通过 promise.catch 捕获,或 promise 全局错误捕获
const p3 = () => new Promise((reslove, reject) => {
setTimeout(() => {
reject('async error');
})
});
function main3() {
p3().catch(e => console.log(e));
}
main3();
方法三
封装为 promise,通过 async await 调用,通过 try catch 捕获
const fetchFailure = () => new Promise((resolve, reject) => {
setTimeout(() => {// 模拟请求
if(1) reject('fetch failure...');
})
})
async function main () {
try {
const res = await fetchFailure();
console.log(res, 'res');
} catch(e) {
console.log(e, 'e.message');
}
}
main(); // fetch failure... e.message
相关文章
- 前端——JavaScript
- json解析模块
- JavaScript 入门基础 / 概念介绍(一)
- Vue + SpreadJS 实现高性能数据展示与分析
- SpreadJS集算表联动数据透视表,高效实现前端数据多维分析
- 如何用 JavaScript 编写你的第一个单元测试
- 如何在JavaScript中使用for循环
- JavaScript中的箭头函数
- 有用的内置Node.js APIs
- 你不知道的JavaScript APIs
- 如何在JavaScript中使用高阶函数
- React报错之Property does not exist on type 'JSX.IntrinsicElements'
- 检查原生 JavaScript 函数是否被覆盖
- React报错之Type '() => JSX.Element[]' is not assignable to type FunctionComponent
- React报错之JSX element type does not have any construct or call signatures
- React报错之组件不能作为JSX组件使用
- 理解JavaScript中的window对象
- 让Node项目支持可扩展的环境配置
- 使用 DevTools 加速调试 Node.js 应用程序
- 讲述JSON Web Token(概念)