TimeOut 中的回调函数(箭头)和 class 方法

callback function (arrow) and class method in TimeOut

我想触发 2 个具有唯一超时的函数。
以下工作正常

    setTimeout(function() {
      function1(); // runs first
      function2(); // runs second
    }, 1000)

但在我的例子中,我有一个 class 方法和一个回调函数(箭头函数)。
它看起来像这样(最小化):

    class Timer {
      constructor(callback) {
        this.active = false;
        this.callback = callback;
      }

      cancel() {
        this.active = false;
      }

      set() {
        this.active = true;
        this.timeOut = setTimeout( function() {
          this.cancel();
          this.callback; // HERE is my problem. doesn't run, not casted as a function
        }, 1000)
      }

我收到以下错误 Expected an assignment or function call and instead saw an expression。 有什么技巧可以解决这个问题吗?

你不是在调用回调函数,你也可以在调用前添加类型检查。

set() {
  this.active = true;
  this.timeOut = setTimeout(() => {
    this.cancel();
    typeof this.callback === 'function' && this.callback();
  }, 1000)
}