我似乎无法让它发挥作用。
openContactUsForm(stop: Boolean = false) {
let openContactForm = setTimeout(() => {
$('#myButton').click();
}, 6000);
if (stop) {
clearTimeout(openContactForm);
$('#myButton').click();
}
}
即使将stop
布尔值作为true
传递
答案 0 :(得分:1)
听起来你是在调用方法一次,然后再次调用它,并将stop传入为true。在这种情况下,无论您何时调用该方法,都会重新定义openContactForm
。如果您在react组件中,可以执行此操作的一种方法是将计时器设置为组件上的属性。
如果您正在进行ES6课程,您最初可以在构造函数
中定义它constructor() {
super()
this.timer = null;
}
openContactUsForm(stop: Boolean = false) {
if (stop) {
clearTimeout(this.timer);
$('#myButton').click();
return;
}
this.timer = setTimeout(() => {
$('#myButton').click();
}, 6000);
}
如果您的标签错误且没有使用reactjs,您只需要在顶级范围内定义计时器,这样每次调用该函数时都不会重写,导致计时器ID发生变化而不会停止原来的计时器。