Javascript 未调用setTimeout逻辑

Javascript 未调用setTimeout逻辑,javascript,Javascript,你能帮我理解为什么这个setTimeout逻辑不起作用吗 任务很简单,当用户单击一个按钮时,将执行一个复制输入文本的函数,然后将打印一条消息,解释复制成功,然后等待一秒钟并隐藏消息。最后一部分不起作用 我共享一个堆栈片段 作用{ const copyText=document.querySelector'email'; const copyButton=document.querySelector'copy'; const messageBox=document.querySelector'm

你能帮我理解为什么这个setTimeout逻辑不起作用吗

任务很简单,当用户单击一个按钮时,将执行一个复制输入文本的函数,然后将打印一条消息,解释复制成功,然后等待一秒钟并隐藏消息。最后一部分不起作用

我共享一个堆栈片段

作用{ const copyText=document.querySelector'email'; const copyButton=document.querySelector'copy'; const messageBox=document.querySelector'message'; 功能副本{ copyText.select; document.execCommand'Copy'; 显示消息; } 函数显示消息{ messageBox.innerHTML='Email copied'; 明确信息; } 函数clearMessage{ const timeoutID=window.setTimeout=>{ messageBox.innerHTML=; }, 1000; window.cleartimeoutid; } copyButton.addEventListener“单击”,复制; }; 复制
使用window.ClearTimeOutId;设置超时后,您将立即清除超时;。只需删除window.cleartimeoutid;它会起作用的


没有必要使用clearTimeout,除非您想取消超时并阻止调用它的回调。

在函数内部按如下方式清除超时-

function clearMessage() {
        const timeoutID = window.setTimeout(() => {
            messageBox.innerHTML = '';
            window.clearTimeout(timeoutID); // place it here
        }, 1000);

    }

因此,一秒钟后,不必要的超时将被清除。

在声明计时器后立即清除计时器。删除window.clearTimeout调用,它将工作

使用window.cleartimeoutid;在超时函数的末尾,因为setTimeout是异步的

作用{ const copyText=document.querySelector'email'; const copyButton=document.querySelector'copy'; const messageBox=document.querySelector'message'; 功能副本{ copyText.select; document.execCommand'Copy'; 显示消息; } 函数显示消息{ messageBox.innerHTML='Email copied'; 明确信息; } 函数clearMessage{ const timeoutID=window.setTimeout=>{ messageBox.innerHTML=; window.cleartimeoutid; }, 1000; } copyButton.addEventListener“单击”,复制; }; 复制
谢谢Fazal提供的信息,我想问一下,在什么地方放Cleartimeout比较合适,不客气。使用GC不必要的定时器来释放内存是一个很好的做法。请注意,clearTimeout很少需要。clearInterval更常见。。clearTimeout不会为您节省任何内存,它只是用来取消超时,所以如果您总是想等待1秒,clearTimeout是没有意义的。是的。你是对的