您当前的位置: 首页 > 

@大迁世界

暂无认证

  • 1浏览

    0关注

    739博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

08.attempt 方法

@大迁世界 发布时间:2021-06-28 08:28:55 ,浏览量:1

使用方便有用的方法,以减少代码行数,提高我们的工作效率,增加我们的摸鱼时间。

attempt 方法

功能:试图用提供的参数调用一个函数,能成功调用则返回函数所执行结果,否则返回一个错误对象。

有点抽象,稍后我们看看示例讲解。

实现

const attempt = (fn, ...args) => {
  try {
    return fn(...args);
  } catch (e) {
    return e instanceof Error ? e : new Error(e);
  }
};

说明一下:

  • 使用 try... catch 来捕获函数执行出错的情况,如果能执行成功则返回函数的执行结果,否则返回一个错误。
  • 如果捕获的对象不是 Error,则使用它创建一个新的Error

示例

var elements = attempt(function (selector) {
  return document.querySelectorAll(selector);
}, ">_>");
if (elements instanceof Error) elements = []; // elements = []

解释一下:

 attempt(function(selector) {
  return document.querySelectorAll(selector);
}, '>_>')

内部执行后的结果是:

function(selector) {
  return document.querySelectorAll(selector);
}

此时的 selector 为 '>_>',返回document.querySelectorAll('>_>'),又因为 '>_>'不是一个合法的选择器,所以执行过程会报错,由 try... catch 捕获,最终的结果是返回一个错误对象。

所以if (elements instanceof Error) 成立,elements 的值为 []

关注
打赏
1664287990
查看更多评论
立即登录/注册

微信扫码登录

0.2185s