setTimeout不希望延迟方法调用

时间:2016-01-25 11:40:56

标签: jquery ecmascript-6

我有一个带有一个实例作为对象的方法的类。单击元素时,应调用object方法。两个电话都有效。但是,我预计第二次通话会延迟75000次。但是,根本没有延迟。它毫无延迟地进行第二次通话。我在这里使用ECMAScript6。

class Test {
  foo(x){
    switch (x) {
      case 1:
        alert('test1')
      break;
      case 2:
        alert('test2');
      break;
    }
  }
}

var test = new Test();
$('#test-trigger').click(function() {
  test.foo(1);
  setTimeout(test.foo(2),75000)
});

1 个答案:

答案 0 :(得分:3)

您正在调用setTimeout中的函数,而不是将函数作为参数传递。您可以创建一个新函数(来自旧函数),使用Function.prototype.bind()绑定它并在其前面添加参数:

setTimeout(test.foo.bind(test, 2), 75000);