我有一个带有一个实例作为对象的方法的类。单击元素时,应调用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)
});
答案 0 :(得分:3)
您正在调用setTimeout
中的函数,而不是将函数作为参数传递。您可以创建一个新函数(来自旧函数),使用Function.prototype.bind()绑定它并在其前面添加参数:
setTimeout(test.foo.bind(test, 2), 75000);