vue 如何封装try catch

const encapsulation = function (method) {
  try {
    //调用encapsulation这个方法时传入方法或函数会执行在这里
  } catch (error) {
    return
  }
}

理想效果是可以调用异步接口

encapsulatio(await editUser(data))

很多try catch的代码看起来很乱,想着怎么把try catch封装,然后调用这个封装后的方法,把函数或者代码传入encapsulation这个方法后,能在try里执行

我表达的可能不是很清晰,在这里先感谢各位大神们的解答了,小弟感激不尽!

阅读 5.6k
1 个回答

采用和节流、防抖一样的实现方式,用高阶函数实现,也就是 encapsulation 返回一个函数,这个函数会在执行时把参数传递给 method

const encapsulation = function (method) {
    return function(...args){
        try {
            //调用encapsulation这个方法时传入方法或函数会执行在这里
            return method.bind(this)(...args);
        } catch (error) {
            return error
        }
    }
};

// 调用的时候:
function test(a, b){
    return console.log(a, b);
}
const tryTest = encapsulation(test);

tryTest(1, 2); // 1, 2

不过要慎用encapsulation,因为屏蔽错误往往会导致调试困难,甚至导致更为棘手的问题;另外,在容易产生性能瓶颈的代码中也要尽量保证函数的可靠性和参数的一致性,使用高阶函数和try...catch都可能进一步降低性能。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题