I, in denen ein Quiz-Typ App mache, wenn der Benutzer eine Frage bekommt, geht ein Timer von 10 Sekunden wie folgt aus:
$scope.timer2 = function() {
setTimeout(function() {
console.log('times up!!!!');
}, 10000)
}
und es wird aufgerufen wird, wenn eine Frage wie diese kommt:
timerHandle = setTimeout($scope.timer2());
und nach dieser timer2
Ausführung eine andere Frage erscheint und so weiter, eine andere Art und Weise der Frage nach oben geknallt wird, ist, dass der Benutzer auch eine Option wählt dann eine neue Frage kommt auf. So weit so gut, aber das Problem ist, dass, wenn angenommen wird, dass 5 Sekunden vergangen sind und dann der Benutzer eine Option auswählt, zeigt "timer2" immer noch "mal hoch !!" nach 5 weiteren Sekunden und ein weiterer Timer für die neue Frage zeigt auch "mal hoch !!" wenn der Benutzer keine Option ausgewählt hat.
Was ich versuche zu sagen ist, dass ich möchte, dass die timer2
zu stoppen, wenn der Benutzer eine Option auswählt, und dann möchte ich wieder diesen Timer aufgerufen werden, da eine neue Frage eintreffen wird. Dies ist der Winkel-Code, der ausgeführt wird, wenn Benutzer eine Option wählt: -
$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());
ich bearbeiten Ihre Frage, weil sie AngularJS gefragt, aber das Problem ist wirklich generical. –
ja lol danke dafür. – Asim