为什么Javascript函数不';你不能按编码顺序工作吗?
我正在为Pomodoro技术制作一个学习计时器(25分钟学习5分钟休息)。我的计时器只有在我叫它一次时才工作。如果我叫它两次或两次以上,它会倒计时到负分秒。此外,当我先调用学习计时器,然后调用中断计时器时,它会执行中断计时器并跳过学习计时器为什么Javascript函数不';你不能按编码顺序工作吗?,javascript,function,Javascript,Function,我正在为Pomodoro技术制作一个学习计时器(25分钟学习5分钟休息)。我的计时器只有在我叫它一次时才工作。如果我叫它两次或两次以上,它会倒计时到负分秒。此外,当我先调用学习计时器,然后调用中断计时器时,它会执行中断计时器并跳过学习计时器 let timer; function studying(){ display_quote(); var min = document.getElementById("study-min").value; docu
let timer;
function studying(){
display_quote();
var min = document.getElementById("study-min").value;
document.getElementById("state").innerHTML = "STUDYING";
var sec = min*60;
timer = setInterval(function(){
minn = Math.floor(sec/60);
secc = sec%60;
document.getElementById("clock").innerHTML = getTime(minn,secc);
sec-=1;
if(sec==-1){
clearInterval(timer);
return;
}
},1000)
}
function breaking(){
display_quote();
min = document.getElementById("break-min").value;
document.getElementById("state").innerHTML = "BREAKING";
sec = min*60;
timer = setInterval(function(){
minn = Math.floor(sec/60);
secc = sec%60;
document.getElementById("clock").innerHTML = getTime(minn,secc);
sec-=1;
if(sec==-1){
clearInterval(timer);
return;
}
},1000)
}
这是循环
for(var t=1;t<=loop;t++){
studying();
breaking();
}
for(var t=1;t发生这种情况是因为setInterval
中的回调“异步”运行,为了解决这个问题,您可以使用它。您可以有这样一个甜美的代码:
let定时器;
异步函数学习(){
显示_quote();
让承诺=新承诺((解决、拒绝)=>{
var min=document.getElementById(“研究min”).value;
document.getElementById(“state”).innerHTML=“正在学习”;
var-sec=min*60;
定时器=设置间隔(函数(){
minn=数学层(第60节);
secc=sec%60;
document.getElementById(“clock”).innerHTML=getTime(minn,secc);
sec-=1;
如果(秒==-1){
清除间隔(计时器);
解决();
返回;
}
}, 1000);
});
回报承诺;
}
异步函数中断(){
显示_quote();
让承诺=新承诺((解决、拒绝)=>{
min=document.getElementById(“break min”).value;
document.getElementById(“state”).innerHTML=“BREAKING”;
秒=分钟*60;
定时器=设置间隔(函数(){
minn=数学层(第60节);
secc=sec%60;
document.getElementById(“clock”).innerHTML=getTime(minn,secc);
sec-=1;
如果(秒==-1){
清除间隔(计时器);
解决();
返回;
}
}, 1000);
});
回报承诺;
}
异步函数doJob(){
设循环=5;
对于(var t=1;t)来说,如果只使用全局变量,就不能同时运行两个函数。我试图通过创建两个用于学习和中断的计时器变量来修复它,并通过if-else案例运行学习和中断计时器。但是,它仍然跳过学习和仅运行中断。我有没有犯任何错误?``对于(var t=1;t)