如何在调用时停止函数?

How to stop a function when it's called?

我正在构建一个可以递减或递增计数的程序,我已经开始工作了,但是我喜欢在递减计数的过程中按递增计数,反之亦然,我希望计数器停止并计数向上,反之亦然。我该如何实现?非常感谢您的帮助:)

function myFunctionUp() {
    var Timer = setInterval(function () {
        i++;
        document.getElementById("mydata").textContent = i;
        if (i >= 21)
            clearInterval(Timer);
            if (i == 21){
                document.getElementById("mydata").textContent = "Boom-up!";
            }
    }, 1000);

}
function myFunctionDown() {
    
    var Timer = setInterval(function () {
        i--;
        document.getElementById("mydata").textContent = i;
        if (i <= 0)
            clearInterval(Timer);
            if (i == 0){
                document.getElementById("mydata").textContent = "Boom-down";
            }
            
    }, 1000);
}

使用变量来跟踪计数的方式。单击按钮时,反转变量的值:

let countDown = 10;
let increment = -1;

function count() {
  countDown += increment;
  document.getElementById('container').innerText = countDown;
  setTimeout(() => count(), 1000);
}

document.getElementById('btn').addEventListener('click', function () {
  increment = -increment;
});
count();

工作 stackblitz here

您通常永远不会“控制”另一个方法的执行。当你想这样做时,逻辑必须颠倒过来。函数本身必须询问是否应该继续。

举个例子:让我们来看一个在无限循环中工作的函数,您希望它能够按需停止。在某些语言中,您可以 运行 线程中的一些代码并按需中断线程。但即使可能,在执行过程中停止某些代码通常也不是一个好主意。

一个更好的方法是创建一个“应该继续吗?”迭代结束时的一段代码。它可以读取一个变量或调用一个方法等。当你想停止迭代时,你只需要设置这个变量并且你知道无限循环将在当前迭代结束时优雅地停止