为什么Javascript函数不';你不能按编码顺序工作吗?

为什么Javascript函数不';你不能按编码顺序工作吗?,javascript,function,Javascript,Function,我正在为Pomodoro技术制作一个学习计时器(25分钟学习5分钟休息)。我的计时器只有在我叫它一次时才工作。如果我叫它两次或两次以上,它会倒计时到负分秒。此外,当我先调用学习计时器,然后调用中断计时器时,它会执行中断计时器并跳过学习计时器 let timer; function studying(){ display_quote(); var min = document.getElementById("study-min").value; docu

我正在为Pomodoro技术制作一个学习计时器(25分钟学习5分钟休息)。我的计时器只有在我叫它一次时才工作。如果我叫它两次或两次以上,它会倒计时到负分秒。此外,当我先调用学习计时器,然后调用中断计时器时,它会执行中断计时器并跳过学习计时器

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)