Javascript 循环期间的事件

Javascript 循环期间的事件,javascript,loops,events,Javascript,Loops,Events,我有以下代码: let release = false; document.querySelector(".class").onmouseup = () => { release = true; } document.querySelector(".class").onmousedown = (e) => { if (e.button === 0) { release = false; while

我有以下代码:

let release = false;
document.querySelector(".class").onmouseup = () => {
    release = true;
}
document.querySelector(".class").onmousedown = (e) => {
    if (e.button === 0) {
        release = false;
        while (!release) {
            console.log("click pressed")
        }
    }
}
但是当我单击时,onmouseup事件不会被切换,循环也不会停止。
我怎样才能做到这一点呢?

正如一位评论员所说:不要使用无限循环。这将阻止代码执行

您几乎有一个工作代码。试试这个:

let release=false;
document.querySelector(“.class”).onmouseup=()=>{
释放=真;
console.log('click release');
}
document.querySelector(“.class”).onmousedown=(e)=>{
如果(如按钮===0){
释放=假;
console.log(“点击按下”)
}

}
我找到了一个解决方案:

let colorPickerLoop;
document.querySelector(".class").onmouseup = () => {
    clearInterval(colorPickerLoop)
    console.log('click released');
}
document.querySelector(".class").onmousedown = (e) => {
    colorPickerLoop = setInterval(() => {
        console.log("click pressed")
    }, 10)
}

我认为这不是最好的做法,但它正在发挥作用

不要使用无限循环。你到底想实现什么?不要为此使用while循环。您可以使用类似于
setInterval(()=>console.log(“单击按下”)的东西
因为虽然循环在整个流程中运行,并阻止其他人执行。由于release的值永远不会更改,因此无论发生任何其他情况,您的代码都无法退出该循环。相关,可能:。我必须使用循环在循环中执行操作,直到单击完成release@Binary_Serox你到底需要做什么当按钮关闭时,是否执行?很遗憾,您不能使用阻止主事件循环的while循环。@Binary_Serox,如果您提供有关要完成的操作的详细信息,我们可能会提供更好的帮助。您最好使用异步函数。(循环将阻止执行,代码中的循环完全可以阻止浏览器)