3 回答
TA贡献1829条经验 获得超13个赞
您需要在函数timer 外部声明。否则,您将在每次函数调用时获得一个全新的变量。
var timer;
function endAndStartTimer() {
window.clearTimeout(timer);
//var millisecBeforeRedirect = 10000;
timer = window.setTimeout(function(){alert('Hello!');},10000);
}
TA贡献1831条经验 获得超10个赞
问题在于该timer变量是局部变量,并且在每个函数调用之后其值都会丢失。
您需要持久化它,可以将其放在函数外部,或者如果您不想将变量公开为全局变量,则可以将其存储在闭包中,例如:
var endAndStartTimer = (function () {
var timer; // variable persisted here
return function () {
window.clearTimeout(timer);
//var millisecBeforeRedirect = 10000;
timer = window.setTimeout(function(){alert('Hello!');},10000);
};
})();
TA贡献2051条经验 获得超10个赞
在反应中使用此方法:
class Timeout extends Component {
constructor(props){
super(props)
this.state = {
timeout: null
}
}
userTimeout(){
const { timeout } = this.state;
clearTimeout(timeout);
this.setState({
timeout: setTimeout(() => {this.callAPI()}, 250)
})
}
}
例如,如果您只想在用户停止输入后才调用API,则该功能非常有用。可以通过onKeyUp将userTimeout函数绑定到输入。
添加回答
举报