我正在制作一个测验类型的应用程序,其中,当用户遇到问题时,计时器为10秒,如下所示:
$scope.timer2 = function() {
setTimeout(function() {
console.log('times up!!!!');
}, 10000)
}
当一个问题出现时,它被调用:
timerHandle = setTimeout($scope.timer2());
在执行此
timer2
之后,将弹出另一个问题,依此类推,弹出问题的另一种方式是,用户也选择了一个选项,然后又出现了一个新问题。到目前为止,还不错,但问题是,如果假设已过去了5秒,然后用户选择了一个选项,则“ timer2”仍显示“ times up !!”。再过5秒后,新问题的另一个计时器也会显示“ times up !!”如果用户尚未选择任何选项。我要说的是,当用户选择任何选项时,我希望
timer2
停止,然后我希望再次调用此计时器,因为将会出现新问题。这是当用户选择一个选项时执行的角度代码:
$scope.checkanswer=function(optionchoosed){
$http.get('/quiz/checkanswer?optionchoosed='+ optionchoosed).then(function(res){
if(res.data=="correct"){
$scope.flag1=true;
$scope.flag2=false;
}else{
$scope.flag2=true;
$scope.flag1=false;
}
$http.get('/quiz/getquestions').then(function(res){
console.log("respo");
$scope.questions=res.data;
clearTimeout($scope.timerHandle); //not working
timerHandle = setTimeout($scope.timer2());
最佳答案
您可以尝试使用AngularJS $timeout服务。
然后按照以下步骤进行操作:
var myTimer = $timeout(function(){
console.log("hello world")
}, 5000);
....
$timeout.cancel(myTimer);
关于javascript - 在AngularJS中停止setTimeout函数(提示:使用$ timeout),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48020909/