回到课程

添加装饰器方法 “defer()” 到函数

重要程度: 4

添加方法 defer(ms) 到所有的函数原型,它返回一个包装函数,延迟 ms 毫秒调用函数。

这里是它应该如何执行的例子:

function f(a, b) {
  alert( a + b );
}

f.defer(1000)(1, 2); // 1 秒钟后显示 3

请注意参数应该被传给原函数。

Function.prototype.defer = function(ms) {
  let f = this;
  return function(...args) {
    setTimeout(() => f.apply(this, args), ms);
  }
};

// check it
function f(a, b) {
  alert( a + b );
}

f.defer(1000)(1, 2); // shows 3 after 1 sec