レッスンに戻る

デコレートする "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